Programm plattformunabhängig machen
lima-city → Forum → Programmiersprachen → Programmieren mit .NET & Mono
anwendung
element
empfehlen
entwickeln
ergebnis
funktionieren
http
informationsquelle
machen
paar
plattform
problem
programm
software
sprache
standard
tag
url
windows
zeit
-
Normalerweise sollten .NET-tag/programm">Programme ja möglichst plattform unabhängig sein.
Leider ist es oft der Fall, dass gewisse Funktionen nur über die Windows-API realisiert werden können, z.B. den Computer runterfahren.
Kennt ihr gute Informationsquellen bei welchen man dafür Ersatzmöglichkeiten für Linux und Mac finden kann?
Beitrag zuletzt geändert: 28.11.2016 17:25:38 von onlinevideorecorder -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
MONO
Mono gibt es für Linux/BSD/Mac und Windows
Beitrag zuletzt geändert: 29.11.2016 3:21:37 von xn--94h -
1. Plattformunabhängigkeit wird nicht durch die Sprache gewährleistet, sondern durch die Bibliotheken/Frameworks, auf die zugegriffen wird.
2. .NET wird bei dir auch auf Windows nicht laufen, wenn du as .NET-Framework auf dem jeweiligen Rechner installiert hast(QUasi eine zwischenschicht zwischen Programm und betriebsystem
wie vom xn bereits gesagt, gibt es ein Mono-Framework auf Unix/Linux, welches dem .NET-Framework entspricht und somit .NET-Programme auf diesen Plattformen lauffähig macht. -
sebulon schrieb:
wie vom xn bereits gesagt, gibt es ein Mono-Framework auf Unix/Linux, welches dem .NET-Framework entspricht und somit .NET-Programme auf diesen Plattformen lauffähig macht.
Ich habe vergessen in der Frage anzugeben, dass mir das klar ist.
Was ich meine ist, ob Ihr Informationsquellen kennt usw. wo man nach den APIs oder ihrer hauptsächlichen Verwendung schauen kann und dann eine Lösung für Linux bzw. Mac angeboten bekommt?
Beitrag zuletzt geändert: 29.11.2016 17:24:21 von onlinevideorecorder -
http://stackoverflow.com/questions/7553557/c-sharp-application-on-apple-ios
wäre die Lösung für iOS
allerdings würde ich niemals für Apple software entwickeln, schon prinzipiell nicht, höchstens Webapps. Die beteiligen sich unmoralisch an deinen Einnahmen.
Ansonsten einfach nur die Doku zum Monoframework reinziehen... du wirst schon fündig werden...
oder zu zahlst ne Stange Geld und besuchst ein Seminar dazu...
aber Internet-Recherche würd ich dir eher empfehlen, andererseits würd ich dir erstmal empfehlen, für eine Plattform zu entwickeln, bis du die Sprache beherrscht.
Kleiner Tipp: Linux kann man auch runterfahren, wenn man sich Shell-Scripte bedient, gleiches Konzept geht auch bei Windows.
http://stackoverflow.com/questions/11803283/shutdown-linux-using-c-sharp-and-mono -
@MONO:
Also die Zeiten in denen ich noch viel .NET programmiert habe sind schon ein paar Tage her, aber wenn ich mich richtig erinnere ist MONO eben keine Vollständige Portierung. Zumindest hatte ich damit schon ein paar mal das Problem, dass etwas unter Windows gepasst hat, unter Linux mit MONO aber nicht (speziell UI-Elemente etc.). -
slysphotos schrieb:
@MONO:
Also die Zeiten in denen ich noch viel .NET programmiert habe sind schon ein paar Tage her, aber wenn ich mich richtig erinnere ist MONO eben keine Vollständige Portierung. Zumindest hatte ich damit schon ein paar mal das Problem, dass etwas unter Windows gepasst hat, unter Linux mit MONO aber nicht (speziell UI-Elemente etc.).
Ja ein Programm ist nicht von heute auf morgen perfekt.
Inzwischen Arbeitet sogar MS an Mono mit.
Mono ist open source u. entwickelt sich weiter, daher kann man davon ausgehen das Mono größten teils kompatibel ist.
Und wenn etwas nicht funktioniert kann man ja auch notfalls den code abändern.
Beitrag zuletzt geändert: 6.12.2016 21:29:04 von xn--94h -
Du könntest dir auch COM anschauen. COM ist eine etwas ältere Technik von Microsoft um plattformunabhängige Softwarekomponenten zu erstellen. Vielleicht ist das ja das was du suchst:)
-
xn--94h schrieb:
Die Erfahrung mit .NET-Programmen, die eigentlich portabel geschrieben waren, aber unter Linux dann doch nicht so funktioniert haben, habe ich leidlich schon aus Anwendersicht gemacht :) Ich wollte ein .NET-Programm unter Linux starten und konnte sogar erfolgreich das GUI öffnen, leider hat sich das Programm bereits nach sehr kurzer Zeit von selbst wieder beendet (unter Windows hat es problemlos funktioniert). Daher lautet meine Empfehlung im Bezug auf Plattformunabhängigkeit im Allgemeinen: Testen!
slysphotos schrieb:
Ja ein Programm ist nicht von heute auf morgen perfekt. ...
@MONO:
Also die Zeiten in denen ich noch viel .NET programmiert habe sind schon ein paar Tage her, aber wenn ich mich richtig erinnere ist MONO eben keine Vollständige Portierung. Zumindest hatte ich damit schon ein paar mal das Problem, dass etwas unter Windows gepasst hat, unter Linux mit MONO aber nicht (speziell UI-Elemente etc.).
Das ist natürlich insofern widersprüchlich, als dass ein plattformunabhängiges Programm eigentlich unter allen Plattformen funktionieren müsste, aber immer wenn man mit Dingen arbeitet, die nicht schon Teil der Sprache oder ihrer klar definierten Standard-Library sind (und selbst da kann es Überraschungen geben), dann ist das Risiko sehr hoch, dass man Programme produziert, die zwar portabel gedacht sind, aber dann doch nicht überall funktionieren.
Ich wollte letztens ein Programm schreiben, welches Daten über eine serielle Schnittstelle liest und schreibt und habe dafür auf eine Compilerspezifische API-Erweiterung (gegenüber dem Standard) zurückgegriffen. Obwohl der Compiler für alle beteiltigten Plattformen zur Verfügung stand und dort problemlos kompilierte, lies sich die Anwendung auf ARM-Systemen (Raspberry Pi 3) nicht ordnungsgemäß verwenden, da das von mir verwendete API anscheinend für ARM nicht implementiert war¹... die Lösung brachte in diesem Falle dann POSIX, was -- obwohl bspw. Debian/GNU Linux nicht dafür zertifiziert ist -- eigentlich ein sehr verlässliches und portables API bereitstellt, das allerdings (leider) nicht so wirklich unter Windows funktioniert (nur mit mehr oder weniger dicken Abstraktionsschichten ala MinGW oder Cygwin...)
¹) Das war das erste Mal, dass mir etwas Derartiges passiert ist. Grundsätzlich bin ich der Ansicht, dass wenn man gegen eine Anwendung/ein API entwickelt, die/das auf allen Zielplattformen genau so verfügbar ist, man eigentlich ziemlich sicher sein kann, dass das Ergebnis plattformunabhängig ist. Entwickelt man also für Mono (auch unter Windows), dann sehe ich gute Chancen, dass das Ergebnis überall funktioneirt, solange man auch nur von Mono bereitgestellte Funktionen verwendet. Für "`das richtige"' .NET gibt es aber keine genau so verfügbare Linux-Alternative, also kann ein .NET-Programm auch nicht so wirklich plattformunabhänig sein (das ist so ähnlich wie Oracle Java vs. OpenJDK, auch wenn da die Unterschiede etwas geringer ausfallen und es vom Oracle Java auch eine Linux-Variante gibt...). -
Programme portabel zu gestalten ist nicht ganz so einfach. Die kleinste tolle Bibilothek, die du in deiner Anwendung nutzt, kann z.B. für Windows funktionieren, aber nicht für Linux. Oder: man muss es in Linux nachinstallieren und auf bestimmte Weise konfigurieren oder erstmal für das jeweilige Zielsystem "builden", also musst du als Anwendungs-Entwickler dafür sorgen, dass das bei der Installation automatisch gemacht wird (nicht das der User dies tun muss). Und wie masysma schon gesagt hat: man muss es für verschiedene Betriebssysteme testen. Selbst mit Websiten und Browsern ist das so, obwohl man da vielleicht meinen könnte, dass es ja unabhängig ist...
Wie auch immer, am vielversprechendsten und zuverlässigsten ist wohl immernoch das Java-Framework was plattform-unabhängigkeit angeht. Klar, wenn man hier wieder spezielle Grafik-Frameworks, etc. (die nicht zum Java-Standard dazugehören) nutzt, dann muss man wohl wieder plattform-spezifisch sein, aber sonst ist es im Großen und Ganzen plattformunabhängig (ein paar Kleinigkeiten gibt es wohl noch, z.B. sind die Pfade für den "Benutzer-Ordner" unterschiedlich zwischen Windows und Java, aber dafür gibt es ja auch Hilfs-Funktionen).
Ich weiß nicht genau wie es die "Profis" mit ihren komplexen Anwendungen machen... aber ich kann mir auch vorstellen, dass diese für jede Platform separat entwickelt werden (aber evtl. einen gemeinsamen platformunabhängigen Kern haben) und natürlich getestet werden. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage