Unterschiede zwischen .NET Compact Framework und .NET Framework

Aktualisiert: November 2007

.NET Compact Framework stellt eine Teilmenge des vollständigen .NET Framework dar. Es implementiert etwa 30 % der gesamten .NET Framework-Klassenbibliothek und enthält darüber hinaus spezielle Features und Klassen zur Entwicklung für Mobile und Embedded.

In diesem Thema werden nicht alle Unterschiede zwischen beiden Frameworks behandelt, sondern die wesentlichen Unterschiede bei der Anwendungsentwicklung aufgeführt.

Anwendungsdomänen

.NET Compact Framework unterstützt derzeit nicht das Laden von Assemblys in einen domänenneutralen Codebereich für die Verwendung durch mehrere Anwendungsdomänen. Weitere Informationen finden Sie unter Anwendungsdomänen in .NET Compact Framework.

Arrays

Manche Sprachen unterstützen zwar Untergrenzen, die nicht 0 (null) sind, die Common Language Runtime (CLR) unterstützt diese jedoch nicht. Sie löst vielmehr eine MissingMethodException aus, wenn das erste Element nicht 0 (null) ist.

ASP.NET

.NET Compact Framework ist in erster Linie eine leistungsstarke Clientplattform und bietet keine ASP.NET-Unterstützung. Um Webseiten für Mobilgeräte zu entwickeln, können Sie ASP.NET Mobile-Websteuerelemente verwenden. Wenn Sie Webseiten für PCs oder Webdienstanbieter entwickeln möchten, lesen Sie in der ASP.NET-Dokumentation nach.

Assemblys und Dateiformate

Assemblys werden für Anwendungen in beiden Framework-Versionen verwendet. Beide Framework-Versionen greifen auf PE-Dateien (Portable Executables, übertragbare ausführbare Dateien) zu. Diese enthalten MSIL (Microsoft Intermediate Language) und Metadaten, die eine .NET Framework-Anwendung definieren. Eine PE-Datei kann auf einen Programmiernamespace verweisen, der durch andere Assemblydateien definiert und mit diesen gemeinsam verwendet wird. Weitere Informationen finden Sie unter Binärkompatibilität mit dem vollständigen .NET Framework.

Assemblys und globaler Assemblycache

.NET Compact Framework unterstützt derzeit keine Assemblys mit mehreren Modulen, bietet jedoch Unterstützung für Satellitenassemblys.

Klassen und Typen

.NET Compact Framework unterstützt eine Teilmenge der .NET Framework-Klassenbibliothek. Diese Teilmenge ist für Anwendungen geeignet, die auf Geräten mit beschränkten Ressourcen zum Einsatz kommen sollen, und ist hinsichtlich der Semantik mit den gleichnamigen Klassen in .NET Framework kompatibel.

Weitere Informationen dazu, wie Sie feststellen, ob .NET Compact Framework-Unterstützung verfügbar ist, finden Sie unter Gewusst wie: Suchen von unterstützten Membern von .NET Compact Framework in der Klassenbibliothek.

COM-Interop

Weitere Informationen zu COM-Interop und den Marshallingunterschieden zwischen .NET Compact Framework und dem vollständigen .NET Framework finden Sie unter Interoperabilität in .NET Compact Framework.

Common Language Runtime

Die Common Language Runtime profitiert in beiden Framework-Versionen von der verwalteten Codeausführung, der Just-in-Time (JIT)-Kompilierung und der Garbage Collection. Beide Versionen unterstützen die CLS (Common Language Specification).

In beide Framework-Versionen sind primitive Typen sowie andere Typen integriert, die Sie beim Erstellen einer Anwendung verwenden und von denen Sie Ableitungen erstellen können.

Die Common Language Runtime für .NET Compact Framework umfasst etwa 12 % des Umfangs der vollständigen Common Language Runtime von .NET Framework.

Steuerelemente

.NET Compact Framework unterstützt die meisten Windows Forms-Steuerelemente des vollständigen .NET Framework und enthält spezifische Steuerelemente für .NET Compact Framework.

Windows Forms-Steuerelemente werden speziell für .NET Compact Framework erstellt. Weitere Informationen hierzu finden Sie unter Steuerelemente in .NET Compact Framework.

Aktuelles Verzeichnis

Die Funktionalität eines aktuellen Verzeichnisses ist im Windows Embedded CE-Betriebssystem nicht vorhanden. Deshalb unterstützt .NET Compact Framework keine GetCurrentDirectory-Methode und keine SetCurrentDirectory-Methode.

.NET Compact Framework unterstützt die WorkingDirectory-Eigenschaft für ein ProcessStartInfo-Objekt. Ihr Kontext wird von der ausgeführten ausführbaren Datei in nachfolgenden Starts und Dateiladungen jedoch nicht beibehalten.

Daten

.NET Compact Framework stellt die Implementierung einer Teilmenge von ADO.NET bereit und umfasst den SQL Server Mobile-Datenanbieter. Der System.Data.OleDb-Namespace wird nicht unterstützt. Weitere Informationen zur Unterstützung von Daten finden Sie unter Datenzugriff und XML-Unterstützung in .NET Compact Framework.

Datentypen und Gleitkommagenauigkeit

.NET Compact Framework bietet keine Unterstützung der MidpointRounding-Enumeration.

Bei der Berechnung einer Division wird anstelle des korrekten Werts 0 (null) zurückgegeben, wenn der Divisor sehr groß bzw. nahe am maximalen Gleitkommawert oder aber sehr klein bzw. nahe am minimalen Gleitkommawert ist.

Die MIPS-Plattform unterstützt nicht die vollständige Genauigkeit, wie im Standard für binäre Gleitkommaarithmetik (IEEE 754) angegeben, und kann daher zu unerwarteten Ergebnissen führen. Aus Gründen der Leistungsfähigkeit bietet .NET Compact Framework keine Gleitkommaemulation für diese Plattform.

Delegaten

Asynchrone Delegaten wie die BeginInvoke-Methode und die EndInvoke-Methode werden nicht unterstützt. Weitere Informationen hierzu finden Sie unter Asynchrone Programmierung mithilfe von Delegaten.

Bereitstellung von Anwendungen

Zur Bereitstellung einer Anwendung brauchen Sie lediglich die Assembly über eine Kabelverbindung vom Desktopcomputer, einen Infrarotanschluss oder eine drahtlose Internet- oder Intranetverbindung auf das Zielgerät zu kopieren. In Microsoft Visual Studio 2005 können Sie während des Debuggens eine direkte Bereitstellung auf dem Gerät ermöglichen.

Diagnoseablaufverfolgung

.NET Compact Framework unterstützt keine Konfigurationsdateien für die Ablaufverfolgung. Sie können jedoch Leistungsindikatoren verwenden. Weitere Informationen hierzu finden Sie unter Leistung und Diagnose in .NET Compact Framework.

Verworfene Objekte

Im vollständigen .NET Framework ist nicht garantiert, dass der Zugriff auf Eigenschaften oder Methoden eines verworfenen Objekts immer erfolgreich ist. Der Zugriff auf einige Eigenschaften, z. B. Text, ist in .NET Framework jedoch häufig erfolgreich. Augrund von Unterschieden bei der Implementierung zwischen beiden Frameworks schlägt der Zugriff auf Methoden oder Eigenschaften eines verworfenen Objekts in .NET Compact Framework fast immer fehl.

Codierung und Lokalisierung

Unterstützung für Lokalisierung (Globalisierung), z. B. Datumsformate und Tabellensortierung entsprechend dem Gebietsschema, wird aus Kompatibilitäts- und Effizienzgründen nach Möglichkeit aus dem zugrunde liegenden Betriebssystem bezogen.

.NET Compact Framework hängt bei der Datensortierung vom Betriebssystem ab. Deshalb ergibt die Sortierung möglicherweise unerwartete Ergebnisse für einige Kulturen.

.NET Compact Framework bietet keine Unterstützung für threadspezifische CurrentUICulture-Einstellungen.

Weitere Informationen zur Lokalisierungsunterstützung finden Sie unter Codierung und Lokalisierung in .NET Compact Framework.

Ereignisse

.NET Compact Framework unterstützt das GotFocus-Ereignis und das LostFocus-Ereignis, jedoch nicht das Activated-Ereignis und das Deactivated-Ereignis.

Zeichenfolgen für Ausnahmebeschreibungen

.NET Compact Framework bietet Fehlermeldungszeichenfolgen für Ausnahmen in einer separaten DLL-Datei, System.SR.dll, um Speicherplatz zu sparen.

Sie können auch Ausnahmezeichenfolgen für andere Sprachen bereitstellen, um Anwendungen zu lokalisieren.

Dateinamen und -pfade

Bei Angabe eines Dateinamens ohne Pfadinformationen wird in Windows Embedded CE davon ausgegangen, dass sich die Datei im Stammverzeichnis des Geräts und nicht im Anwendungsverzeichnis befindet. Um einen fehlerfreien Betrieb zu gewährleisten, geben Sie absolute Pfadinformationen an.

.NET Compact Framework verarbeitet Uniform Resource Identifier (URI)-Zeichenfolgen, denen das Präfix file:// vorangestellt ist, anders als das vollständige .NET Framework. Eine relative Angabe wie file://myfile wird in \\myfile aufgelöst. Die URI-Zeichenfolge file:///myfile (mit drei Schrägstrichen) wird im Stammverzeichnis in \myfile aufgelöst.

Sie können die Version einer Assembly mit der Version-Eigenschaft abrufen, die entsprechende Unterstützung hängt jedoch vom Hersteller des Geräts ab und kann nicht garantiert werden.

Informationen über das Abrufen des Namens des Verzeichnisses, in dem eine Anwendung enthalten ist, finden Sie unter Gewusst wie: Abrufen des Anwendungsverzeichnisses.

Hohe Auflösung

In .NET Compact Framework 2.0 und höheren Versionen wird die DPI-Auflösung automatisch in Visual Studio-Projekten behandelt. Weitere Informationen zu hoher Auflösung finden Sie unter Gewusst wie: Behandeln von Änderungen der Ausrichtung und Auflösung.

Eingabe/Ausgabe (E/A)

Wegen der Unterschiede in den Gerätebetriebssystemen gelten Einschränkungen für das E/A-Modell. .NET Compact Framework gibt bei Dateiänderungen keine Benachrichtigung aus.

Da die Geräte-E/A im RAM erfolgt, können Datei- und Verzeichnisattribute nicht festgelegt oder abgerufen werden.

Installation und CAB-Dateien

Sie können CAB-Dateien verwenden und Microsoft Windows Installer-Anwendungen erstellen, um Ihre Anwendungen zu verteilen.

Programmiersprachen

Die Compact-Version unterstützt die Entwicklung mithilfe von Visual Basic und Visual C#, bietet derzeit aber keine Unterstützung für C++.

Mathematik

Auf den verschiedenen Geräteplattformen werden nicht alle mathematischen Methoden unterstützt, für Kompatibilitätszwecke sind sie jedoch in der API enthalten.

Speicher

.NET Compact Framework ist für akkubetriebene Systeme optimiert und vermeidet intensive Beanspruchung von RAM und CPU-Zyklen. Weitere Informationen über das Sparen von Arbeitsspeicher finden Sie unter Verwaltung des Gerätespeichers in .NET Compact Framework und Gewusst wie: Verbessern der Leistung.

Netzwerk

.NET Compact Framework bietet IrDA (Infrared Data Association)-Klassen für das Herstellen von Infrarotverbindungen sowie Webüberwachungsklassen für die Abwicklung von HTTP-Anforderungen an das Gerät. Diese Klassen sind nur in .NET Compact Framework verfügbar. Weitere Informationen hierzu finden Sie unter Netzwerk und Konnektivität in .NET Compact Framework.

Proxycode

.NET Compact Framework unterstützt nicht den gesamten von Web Services Description Language-Tool (Wsdl.exe) generierten Code. Informationen darüber, wie Sie feststellen, welcher Code nicht unterstützt wird, finden Sie unter Gewusst wie: Verwenden eines von Wsdl.exe generierten Proxys.

Reflektion

.NET Compact Framework unterstützt nicht den System.Reflection.Emit-Namespace.

.NET Compact Framework unterstützt beim Vergleichen von Reflektionsobjekten wie MethodInfo, FieldInfo, PropertyInfo, EventInfo, MemberInfo, MethodBase, ConstructorInfo und ParameterInfo derzeit nicht den Gleichheitsoperator (==). Ein Alternativverfahren finden Sie unter Implementieren der Equals-Methode.

Remoting

.NET Compact Framework unterstützt kein Remoting. Alternative Lösungen finden Sie unter Message Queuing in .NET Compact Framework.

Sicherheit

Unterschiede und Überlegungen in Bezug auf die Sicherheit werden in Sicherheit in .NET Compact Framework beschrieben.

Serialisierung

Aus Gründen der Größe und Leistungsfähigkeit unterstützt .NET Compact Framework die binäre Serialisierung mit BinaryFormatter und die SOAP-Serialisierung mit SoapFormatter nicht.

.NET Compact Framework bietet jedoch Serialisierungsunterstützung bei der Übertragung von Objektdaten mit SOAP in XML-Webdiensten und der Serialisierung von Datasets in XML.

Größe

.NET Compact Framework macht 8 % der Größe des verteilbaren Pakets des vollständigen .NET Framework aus. Die Größe auf einem Datenträger ist aufgrund der Dateisystemkomprimierung von Windows Embedded CE 50 Prozent kleiner.

Sockets

Nicht alle Socketoptionen werden unterstützt. Weitere Informationen finden Sie unter Socketprogrammierung.

Zeichenfolgenbearbeitung, reguläre Ausdrücke

Anwendungen in .NET Compact Framework, die reguläre Ausdrücke verwenden, sind nicht binärkompatibel mit Anwendungen im vollständigen .NET Framework, die reguläre Ausdrücke verwenden; allerdings sind sie quellcodekompatibel.

Threads

Eine .NET Compact Framework-Anwendung erstellt bis zu vier Threads:

  • Ein Hauptanwendungsthread.

  • Ein Thread, mit dem verschiedene Zeitgeber für Zeitspannen und Timeouts gesteuert werden, die vom System oder von Anwendungen geplant werden können.

  • Ein Thread, mit dem Änderungen an den aktiven TCP/IP-Schnittstellen nachverfolgt werden (wobei das Medienverhalten simuliert wird, das in Windows XP, aber nicht in Windows Embedded CE vorhanden ist).

  • Ein Thread, der zum Ausführen von Objektfinalizern verwendet wird. Dieser Thread wird erstellt, wenn für das erste abschließbare Objekt eine Garbage Collection durchgeführt wird.

Weitere Informationen über die Threadunterstützung finden Sie unter Threading in .NET Compact Framework.

Zeitintervalle

Die Now-Eigenschaft gibt einen Wert zurück, der nur auf die Sekunde, aber nicht auf die Millisekunde genau angegeben wird. Die TickCount-Eigenschaft stellt ein genaueres Maß zur Verfügung.

Zeitgeber

Die Start-Methode und die Stop-Methode für ein System.Timers.Timer-Objekt werden nicht unterstützt. Sie können die zeitliche Steuerung jedoch starten und anhalten, indem Sie die Enabled-Eigenschaft eines System.Windows.Forms.Timer-Objekts auf true oder false festlegen.

Visual Basic My

Die Compact-Version unterstützt das Visual BasicMy-Feature (siehe Entwicklung mit "My"), mit Ausnahme der folgenden My-Objekte:

  • My.Application

  • My.Computer

  • My.User

  • My.Settings

Webdienste

Der Webdienstclient führt von wsdl.exe generierte Assemblys direkt aus.

Verwenden Sie zum Erstellen eines Webdiensts auf dem Gerät nicht localhost, da sich localhost auf das Gerät bezieht, auf dem die Anwendung ausgeführt wird. Stattdessen sollten Sie entweder den Namen oder die IP-Adresse des Computers verwenden.

XML

Aus Gründen der Größe unterstützt .NET Compact Framework keine XML-Schemavalidierung. Es unterstützt jedoch das XML-Dokumentobjektmodell (DOM). Weitere Informationen hierzu finden Sie unter Datenzugriff und XML-Unterstützung in .NET Compact Framework.

Siehe auch

Weitere Ressourcen

Übersicht über .NET Compact Framework