Share via


Différences entre le .NET Compact Framework et le .NET Framework

Mise à jour : novembre 2007

Le .NET Compact Framework est un sous-ensemble du .NET Framework complet. Il implémente environ 30 pour cent de la bibliothèque de classes .NET Framework complète et contient également des fonctionnalités et des classes spécifiques au développement mobile et embarqué.

Même si elle ne décrit pas toutes les différences entre les deux infrastructures, cette rubrique répertorie néanmoins les considérations importantes nécessaires au développement d'applications.

Domaines d'application

Dans sa version actuelle, le .NET Compact Framework ne prend pas en charge le chargement d'assemblys dans une zone de code indépendante du domaine en vue d'une utilisation par plusieurs domaines d'application. Pour plus d'informations, consultez Domaines d'application dans le .NET Compact Framework.

Tableaux

Contrairement à certains langages, le Common Language Runtime (CLR) ne prend pas en charge les limites inférieures autres que zéro et lève une exception MissingMethodException si le premier élément d'un tableau n'est pas zéro.

ASP.NET

Le .NET Compact Framework est essentiellement une plateforme cliente élaborée et ne prend pas en charge ASP.NET. Pour développer des pages Web destinées aux appareils mobiles, vous pouvez utiliser des contrôles Web mobiles ASP.NET. Pour développer des pages Web destinées à des ordinateurs personnels ou des fournisseurs de services Web, consultez la documentation ASP.NET.

Assemblys et formats de fichier

Dans les deux infrastructures, les applications utilisent des assemblys. Les deux infrastructures accèdent à des fichiers PE (portables exécutables) qui contiennent le langage MSIL (Microsoft Intermediate Language) et les métadonnées qui définissent une application .NET Framework. Un fichier PE peut faire référence à un espace de noms de programmation défini et partagé par d'autres fichiers d'assembly. Consultez Compatibilités binaires avec l'ensemble du .NET Framework pour plus d'informations.

Assemblys et Global Assembly Cache

Dans sa version actuelle, le .NET Compact Framework prend en charge les assemblys satellites, mais pas les assemblys composés de plusieurs modules.

Classes et types

Le .NET Compact Framework prend en charge un sous-ensemble de la bibliothèque de classes .NET Framework. Ce sous-ensemble convient au développement d'applications destinées à s'exécuter sur des appareils à ressources limitées et il est sémantiquement compatible avec les classes de même nom du .NET Framework.

Pour plus d'informations sur la prise en charge du .NET Compact Framework, consultez Comment : rechercher des membres du .NET Compact Framework pris en charge dans la bibliothèque de classes.

COM Interop

Pour plus d'informations sur les différences concernant COM Interop et le marshaling entre le .NET Compact Framework et le .NET Framework complet, consultez Interopérabilité dans le .NET Compact Framework.

Common Language Runtime

Dans les deux infrastructures, les Common Language Runtime tirent parti de l'exécution de code managé, de la compilation de code juste-à-temps (JIT) et du garbage collection. Ils prennent en charge la Spécification de langage commun (CLS, Common Language Specification).

Les deux infrastructures possèdent des types primitifs intégrés et mettent à votre disposition d'autres types dont vous pouvez dériver les vôtres lors de la génération de votre application.

La taille du Common Language Runtime du .NET Compact Framework représente environ 12 pour cent de celle du Common Language Runtime du .NET Framework complet.

Contrôles

Le .NET Compact Framework prend en charge la plupart des contrôles Windows Forms fournis par le .NET Framework complet et contient des contrôles spécifiques au .NET Compact Framework.

Les contrôles Windows Forms sont spécialement conçus pour le .NET Compact Framework. Pour plus d'informations, consultez Contrôles dans le .NET Compact Framework.

Répertoire actif

Les fonctionnalités d'un répertoire actif ne sont pas présentes dans le système d'exploitation Windows Embedded CE. Par conséquent, le .NET Compact Framework ne prend pas en charge les méthodes GetCurrentDirectory et SetCurrentDirectory.

Le .NET Compact Framework prend en charge la propriété WorkingDirectory pour un objet ProcessStartInfo. Toutefois, son contexte n'est pas conservé par le fichier exécutable en cours d'exécution dans les lancements et les chargements de fichiers suivants.

Données

Le .NET Compact Framework fournit une implémentation de sous-ensemble d'ADO.NET et inclut le fournisseur de données SQL Server Mobile. L'espace de noms System.Data.OleDb n'est pas pris en charge. Pour plus d'informations sur la prise en charge des données, consultez Accès aux données et prise en charge du langage XML dans le .NET Compact Framework.

Types de données et précision en virgule flottante

Le .NET Compact Framework ne prend pas en charge l'énumération MidpointRounding.

Dans une division, si le diviseur est soit très grand ou égal à la valeur à virgule flottante maximale, soit très petit ou égal à la valeur à virgule flottante minimale, le calcul retourne 0 (zéro) au lieu du résultat correct.

Faute de prendre en charge la précision spécifiée par la norme SBFPA Standard for Binary Floating-Point Arithmetic (IEEE 754), la plateforme MIPS risque de produire des résultats imprévisibles. Pour des raisons de performances, le .NET Compact Framework ne fournit pas de fonction d'émulation de virgule flottante pour cette plateforme.

Délégués

Les délégués asynchrones, notamment les méthodes BeginInvoke et EndInvoke, ne sont pas pris en charge. Pour plus d'informations, consultez Programmation asynchrone à l'aide de délégués.

Déploiement d'applications

Le déploiement d'une application consiste simplement à copier l'assembly sur l'appareil cible à l'aide de sa connexion à l'ordinateur de bureau (par câble, par port infrarouge ou par réseau Internet ou intranet sans fil). Dans Microsoft Visual Studio 2005, vous pouvez déployer directement l'application vers l'appareil au cours du débogage.

Traçage de diagnostic

Le .NET Compact Framework ne prend pas en charge les fichiers de configuration pour le traçage, mais vous pouvez utiliser des compteurs de performance. Pour plus d'informations, consultez Performance et diagnostics dans le .NET Compact Framework.

Objets supprimés

Avec le .NET Framework complet, il n'existe aucune garantie que l'accès aux propriétés ou aux méthodes dans un objet supprimé réussisse toujours. Cependant, l'accès à certaines propriétés telles que Text réussit souvent sur le .NET Framework. En raison de différences d'implémentation entre les deux infrastructures, l'accès aux méthodes ou aux propriétés sur un objet supprimé échouera presque toujours sur le .NET Compact Framework.

Codage et localisation

La prise en charge de la localisation (globalisation), par exemple du format de la date et des tables de tri adaptées aux paramètres régionaux, s'en remet autant que possible au système d'exploitation sous-jacent pour assurer la compatibilité et limiter la taille des applications.

Le .NET Compact Framework dépend du système d'exploitation pour le tri des données. Par conséquent, le tri peut produire des résultats inattendus pour certaines cultures.

Le .NET Compact Framework ne prend pas en charge les paramètres CurrentUICulture par thread.

Pour plus d'informations sur la prise en charge de la localisation, consultez Codage et localisation dans le .NET Compact Framework.

Événements

Le .NET Compact Framework prend en charge les événements GotFocus et LostFocus, mais pas les événements Activated ni Deactivated.

Chaînes de description d'exception

Le .NET Compact Framework fournit les chaînes des messages d'erreur d'exceptions dans une DLL séparée nommée System.SR.DLL afin d'économiser de la mémoire.

Vous pouvez aussi fournir des chaînes d'exception pour d'autres cultures dans le cadre de la localisation des applications.

Noms de fichiers et chemins d'accès

Windows Embedded CE résout un nom de fichier qui est spécifié sans chemin d'accès comme étant dans le répertoire racine de l'appareil, et non dans le répertoire de l'application. Pour garantir la réussite des opérations, spécifiez des informations de chemin d'accès absolu.

Le .NET Compact Framework ne traite pas les chaînes URI (Uniform Resource Identifier) préfixées par file:// de la même façon que le .NET Framework. Une spécification relative telle que file://myfile est convertie en \\myfile. La chaîne URI file:///myfile (avec trois barres obliques) est convertie en \myfile dans le répertoire racine.

Vous pouvez obtenir la version d'un assembly à l'aide de la propriété Version, mais sa prise en charge dépend du fabricant de l'appareil et ne peut pas être garantie.

Pour obtenir le nom du répertoire qui contient une application, consultez Comment : obtenir le répertoire de l'application.

Haute résolution

Dans .NET Compact Framework 2.0 et versions ultérieures, la résolution ppp est traitée automatiquement dans les projets Visual Studio. Pour plus d'informations sur la haute résolution, consultez Comment : gérer les modifications d'orientation et de résolution.

Entrées/Sorties (E/S)

À cause de différences entre les systèmes d'exploitation, le modèle d'E/S est assujetti à des contraintes et des restrictions. Le .NET Compact Framework ne fournit pas de notifications de modifications de fichier.

Comme les E/S de périphérique ont lieu en mémoire vive, il est impossible de définir ou d'utiliser des attributs de fichier et de répertoire.

Installation et fichiers CAB

Vous pouvez utiliser des fichiers CAB et créer des applications MSI (Microsoft Windows Installer) pour distribuer vos applications.

Langages

Le .NET Compact Framework prend en charge le développement à l'aide de Visual Basic et Visual C#, mais ne prend pas en charge C++.

Math

Les méthodes Math ne sont pas toutes prises en charge sur toutes les plateformes d'appareil ; toutefois, elles sont incluses dans l'API pour des raisons de compatibilité.

Mémoire

Le .NET Compact Framework est optimisé pour les systèmes alimentés par batterie et évite d'utiliser intensivement la mémoire vive et le temps processeur. Pour plus d'informations sur la diminution des besoins en mémoire, consultez Gestion de la mémoire des appareils dans le .NET Compact Framework et Comment : améliorer les performances.

Réseau

Le .NET Compact Framework fournit des classes IrDA (Infrared Data Association) pour établir des connexions infrarouges et des classes d'écoute Web permettant de traiter les requêtes HTTP soumises à l'appareil. Ces classes sont uniquement disponibles dans le .NET Compact Framework. Pour plus d'informations, consultez Mise en réseau et connectivité dans le .NET Compact Framework.

Code proxy

Le .NET Compact Framework ne prend pas en charge tout le code généré par l'Outil Web Services Description Language Tool (Wsdl.exe). Pour déterminer le code qui n'est pas pris en charge, consultez Comment : utiliser un proxy généré par Wsdl.exe.

Réflexion

Le .NET Compact Framework ne prend pas en charge l'espace de noms System.Reflection.Emit.

Dans sa version actuelle, le .NET Compact Framework ne prend pas en charge l'opérateur d'égalité (==) dans la comparaison d'objets de réflexion, tels que MethodInfo, FieldInfo, PropertyInfo, EventInfo, MemberInfo, MethodBase, ConstructorInfo et ParameterInfo. Par conséquent, consultez Implémentation de la méthode Equals.

Accès distant

Le .NET Compact Framework ne prend pas en charge l'accès distant. Consultez Message Queuing dans le .NET Compact Framework pour obtenir d'autres solutions.

Sécurité

Les différences et les considérations relatives à la sécurité sont décrites dans Sécurité dans le .NET Compact Framework.

Sérialisation

Pour des raisons de taille et de performances, le .NET Compact Framework ne prend en charge ni la sérialisation binaire à l'aide de BinaryFormatter, ni la sérialisation SOAP à l'aide de SoapFormatter.

Toutefois, le .NET Compact Framework assure la prise en charge de la sérialisation pour transmettre des données d'objet à l'aide de SOAP dans les services Web XML et sérialiser des groupes de données vers XML.

Taille

Le .NET Compact Framework représente 8 pour cent de la taille du package redistribuable .NET Framework complet. La taille sur le disque est réduite de 50 % en raison de la compression du système de fichiers Windows Embedded CE.

Sockets

Les options de socket ne sont pas toutes prises en charge. Pour plus d'informations, consultez Programmation des sockets.

Manipulations de chaîne, expressions régulières

Les versions binaires des applications qui utilisent des expressions régulières dans le .NET Compact Framework ne sont pas compatibles avec celles des applications qui utilisent des expressions régulières dans le .NET Framework complet, mais leurs codes sources sont compatibles.

Threads

Une application .NET Compact Framework crée jusqu'à quatre threads :

  • Un thread d'application principal.

  • Un thread utilisé pour contrôler les délais et minutages divers pouvant être planifiés par le système ou les applications.

  • Un thread utilisé pour suivre les modifications apportées aux interfaces TCP/IP actives (simulant le comportement du média présent sur Windows XP, mais pas sur Windows Embedded CE).

  • Un thread utilisé pour exécuter des finaliseurs d'objets. Il est créé lorsque le premier objet pouvant être finalisé est récupéré par le garbage collector.

Pour plus d'informations sur la prise en charge des threads, consultez Thread dans le .NET Compact Framework.

Intervalles de temps

La propriété Now retourne une valeur propre aux secondes uniquement, pas aux millisecondes. Vous pouvez obtenir une mesure plus fine grâce à la propriété TickCount.

Minuteries (Timers)

Les méthodes Start et Stop pour un objet System.Timers.Timer ne sont pas prises en charge, mais vous pouvez démarrer et arrêter le minutage en affectant la valeur true ou false à la propriété Enabled d'un objet System.Windows.Forms.Timer.

My de Visual Basic

Le .NET Compact Framework prend en charge la fonctionnalité My de Visual Basic (voir Développement avec My) à l'exception des objets My suivants :

  • My.Application

  • My.Computer

  • My.User

  • My.Settings

Services Web

Le client des services Web exécute directement les assemblys générés par wsdl.exe.

N'utilisez pas localhost pour créer un service Web sur l'appareil, car localhost fait référence à l'appareil qui exécute l'application. Utilisez plutôt le nom ou l'adresse IP de l'ordinateur.

XML

Pour des raisons de taille, le .NET Compact Framework ne prend pas en charge la validation de schéma XML. Par contre, il prend en charge le modèle objet de document (DOM, Document Object Model) XML. Pour plus d'informations, consultez Accès aux données et prise en charge du langage XML dans le .NET Compact Framework.

Voir aussi

Autres ressources

Vue d'ensemble du .NET Compact Framework