Plattformunabhängigkeit bedeutet, dass ein Programm auf verschiedenen Plattformen bzw. Betriebssysteme lauffähig ist. In C,C++ bzw. anderen plattformunabhängigen Sprachen sind öfters (mehrere) Veränderungen notwendig um das Programm auf die Zielplattform zu portieren. Diesen Vorgang nennt man Portierung, die Portabilität beschreibt nicht nur die Plattformunabhängigkeit sondern auch den Aufwand um Programm A nach Programm B zu portieren.
Ist .NET plattformunabhängig ?
Zitat
Theoretisch ja, praktisch Ja und Nein... Wie jetzt?
Jedes geschriebene .NET Programm wird zuerst in Bytecode umgewandelt. Dieser Bytecode ist plattformunabhängig und vergleichbar mit dem Bytecode von Java. Erst dann wenn man das Programm ausführt, wird der Bytecode zur Laufzeit in Maschinencode übersetzt, dafür ist das .NET Framework zuständig. Jetzt kommt der Hacken an der Geschichte:
Da es aber kein offizielles .NET Framework für Linux/MacOS gibt, ist die Antwort auf die Frage: Nein.
Microsoft selbst hatte ein Projekt, welches .NET Programmen erlaubt hat auf verschiedenen Plattformen zu rennen. Jedoch ist das Projekt an einem unbekannten Grund gescheitert.
Bedeutet das jetzt, dass .NET nicht plattformunabhängig ist ?
Hier kommt das oben genannte Ja ins Spiel. Es gibt ein Open Source-Projekt, welche sich eine Implementierung, die auf dem ECMA-Standard als Grundlage genommen hat.
Der ECMA-Standard (European Computer Manufacturers Association) ist eine private und internationale Normungsorganisation, die viele Standardisierungen enthält. Darunter die Standardisierung von .NET und C#.
Zitat
Das fortschrittlichste Projekt ist MONO.
MONO...
...unterstützt:
Mono_compatibility.PNG (29,68K)
Anzahl der Downloads: 27
... wird in der nächsten Version:
Mono_coming.PNG (1,29K)
Anzahl der Downloads: 23
unterstützen.
Für Linux-User: Mono benutzt GTK+ bzw. GTK# für die Erstellung der Windows.Forms.
Weitere Informationen über das MONO-Projekt.
Auf der Wikipedia steht, dass es noch das Projekt dotGNU gibt, aber dieses ist seit 4(2006) Jahren von MONO abgelöst worden.
Was muss ich beim Schreiben eines plattformunabhängigen Programms beachten ?
An dieser Stelle möchte ich ein Danke an mikeb69 richten, der mich darauf hingewiesen hat.
Leider akzeptiert das MONO-Projekt keine Backslashes in den Pfaden. Das bedeutet, dass ihr die Backslashes '\' in Forwardslashes '/' umwandeln müsst. Denn Linux bzw. Unix Systeme sehen "MeinOrdner\MeineDatei.txt" nicht als: Im Ordner "MeinOrdner" befindet sich die Datei "MeineDatei.txt". Der Backslash ('\') ist in einem Dateinamen erlaubt! Folglich würde das Linux bzw. Unix System nach einer Datei suchen, deren Name "MeinOrdner\MeineDatei" heißt.
.NET bietet in dieser Hinsicht ein paar Funktionen aus der Klasse Path.
Desweiteren ist es nicht möglich die WinAPI in eurem Programm explizit aufzurufen. MONO unterstützt nur das .NET Framework bzw. hält sich nur am CLI und unterstützt nicht die Win32-API. Für solche Funktionen müsst ihr euch eine plattformunabhängige C#/VB.Net-Library suchen.
MONO erlaubt die Benutzung von Registry-Einträgen!
Linux und Unix sind case-sensitiv. Das bedeutet, dass das Datensystem zwischen Groß/Kleinschreibung unterscheidet. Wenn ihr beispielsweise im Programm geschrieben habt, dass die Datei "Log.txt" als Logging-Datei benutzt werden soll, dann muss auch eine Datei vorhanden sein, die "Log.txt" heißt und nicht "LOG.txt". Denn das sind 2 unterschiedliche Dateien.
MONO erlaubt nicht die Benutzung des Namespaces Enterprise.Services, da dieser als deprecated (veraltet) gilt.
MONO bietet keine COM-Schnittstelle an. Wenn man eine umbedingt haben will, muss man einen Wrapper mit P/Invoke schreiben.
MONO erlaubt keine Programme, welche Steuerelemente/Forms in mehreren Threads erstellen. ALLE Steuerelemente/Forms müssen in einem einzelnen Thread ausgelagert werden.
MONO bietet nicht das alte ASP an. Sondern nur ASP.NET.
MONO bietet ASP.NET Webservices an.
Mit 'erlaubt' ist gemeint, dass MONO euer Programm laufen lässt, aber euer Programm wird undefiniert arbeiten!
Sunny
Dieser Beitrag wurde von Sunny bearbeitet: 13. Apr 2010 - 21:03

Hilfe



















RSS Feed