Differenze tra .NET Compact Framework e .NET Framework.

Aggiornamento: novembre 2007

.NET Compact Framework è un sottoinsieme della versione completa di .NET Framework, ne implementa circa il 30% della libreria di classi e contiene inoltre funzionalità e classi specifiche per lo sviluppo per sistemi operativi Mobile ed Embedded.

In questo argomento non vengono descritte tutte le differenze tra i due framework, ma sono riportate considerazioni utili per lo sviluppo delle applicazioni.

Domini applicazione

.NET Compact Framework attualmente non supporta il caricamento degli assembly in un'area di codice indipendente dal dominio per l'utilizzo da parte di più domini applicazione. Per ulteriori informazioni, vedere Domini applicazione in .NET Compact Framework.

Matrici

Sebbene alcuni linguaggi supportino limiti inferiori diversi da zero, Common Language Runtime (CLR) non supporta tali valori e, se il primo elemento è diverso da zero, genera un'eccezione MissingMethodException.

ASP.NET

.NET Compact Framework è principalmente una piattaforma client completa e non fornisce il supporto per ASP.NET. Per sviluppare pagine Web per dispositivi mobili, è possibile utilizzare i controlli mobili ASP.NET per il Web. Per sviluppare pagine Web per PC o provider di servizi Web, vedere la documentazione di ASP.NET.

Assembly e formati dei file

Le applicazioni per entrambe le versioni di .NET Framework utilizzano gli assembly. Entrambe le versioni accedono ai file eseguibili portabili (PE, Portable Executable), contenenti il linguaggio MSIL (Microsoft Intermediate Language) e i metadati che definiscono le applicazioni per .NET Framework. Un file PE può fare riferimento a uno spazio dei nomi di programmazione definito e condiviso da altri file di assembly. Per ulteriori informazioni, vedere Compatibilità binarie con la versione completa di .NET Framework.

Assembly e Global Assembly Cache

In .NET Compact Framework gli assembly con più moduli non sono attualmente supportati, ma sono supportati gli assembly satellite.

Classi e tipi

.NET Compact Framework supporta un sottoinsieme della libreria di classi di .NET Framework. Tale sottoinsieme è adatto per le applicazioni progettate per essere eseguite su dispositivi con risorse limitate ed è compatibile semanticamente con le classi di .NET Framework con lo stesso nome.

Per informazioni su come determinare il supporto di .NET Compact Framework, vedere Procedura: trovare i membri supportati di .NET Compact Framework nella libreria di classi.

Interoperabilità COM

Per informazioni sulle differenze di interoperabilità COM e marshalling tra .NET Compact Framework e la versione completa di .NET Framework, vedere Interoperabilità in .NET Compact Framework.

Common Language Runtime

Il linguaggio CLR (Common Language Runtime) in entrambe le versioni consente l'esecuzione di codice gestito, la compilazione di codice JIT (just-in-time) e le operazioni di Garbage Collection. È supportato Common Language Specification (CLS).

Entrambe le versioni di .NET Framework includono tipi primitivi incorporati insieme ad altri tipi che è possibile utilizzare direttamente o per operazioni di derivazione durante la compilazione dell'applicazione.

La versione di Common Language Runtime per .NET Compact Framework ha una dimensione pari a circa il 12% di quella per la versione completa di .NET Framework.

Controlli

.NET Compact Framework supporta la maggior parte dei controlli Windows Form disponibili nella versione completa di .NET Framework e contiene inoltre controlli specifici.

I controlli Windows Form sono stati compilati specificamente per .NET Compact Framework. Per ulteriori informazioni, vedere la classe Controlli di .NET Compact Framework.

Directory corrente

La funzionalità di una directory corrente non è presente nel sistema operativo Windows Embedded CE. .NET Compact Framework pertanto non supporta i metodi GetCurrentDirectory e SetCurrentDirectory.

.NET Compact Framework supporta la proprietà WorkingDirectory di un oggetto ProcessStartInfo. Tuttavia, il contesto non viene conservato dall'eseguibile in esecuzione per avvio e caricamento file successivi.

Dati

.NET Compact Framework include un'implementazione limitata di ADO.NET nonché un provider di dati SQL Server Mobile. Lo spazio dei nomi System.Data.OleDb non è supportato. Per ulteriori informazioni sul supporto dei dati, vedere Accesso ai dati e supporto XML in .NET Compact Framework.

Tipi di dati e precisione dei valori in virgola mobile

.NET Compact Framework non supporta l'enumerazione MidpointRounding.

In una divisione, se il divisore è molto elevato o è il massimo valore in virgola mobile oppure è molto basso o è il minimo valore in virgola mobile, il calcolo restituisce 0 (zero) anziché il risultato corretto.

La piattaforma MIPS non supporta la precisione completa specificata dallo standard per le operazioni aritmetiche binarie a virgola mobile (IEEE 754) e può dare luogo a risultati imprevedibili. Per motivi legati alle prestazioni, .NET Compact Framework non fornisce una funzionalità di emulazione della virgola mobile per questa piattaforma.

Delegati

I delegati asincroni, in particolare i metodi BeginInvoke e EndInvoke, non sono supportati. Per ulteriori informazioni, vedere la classe Programmazione asincrona tramite delegati.

Distribuzione di applicazioni

Per distribuire un'applicazione, è possibile copiare facilmente l'assembly nel dispositivo di destinazione utilizzando un cavo di connessione dal computer desktop o dalla porta a infrarossi o una connessione Intranet o Internet senza fili. In Microsoft Visual Studio 2005 è possibile effettuare la distribuzione direttamente nel dispositivo durante il debug.

Analisi diagnostica

.NET Compact Framework non supporta i file di configurazione per l'analisi, ma è possibile utilizzare i contatori delle prestazioni. Per ulteriori informazioni, vedere la classe Prestazioni e diagnostica in .NET Compact Framework.

Oggetti eliminati

La versione completa di .NET Framework non garantisce sempre l'esito positivo dell'accesso alle proprietà o ai metodi di un oggetto eliminato. L'accesso ad alcune proprietà come Text ha spesso tuttavia esito positivo in .NET Framework. A causa di differenze di implementazione tra i due framework, l'accesso ai metodi o alle proprietà di un oggetto eliminato avrà quasi sempre esito negativo in .NET Compact Framework.

Codifica e localizzazione

Il supporto della localizzazione, o globalizzazione, ad esempio la formattazione delle date e l'ordinamento delle tabelle a seconda delle diverse impostazioni locali, è demandato al sistema operativo sottostante, quando possibile, per migliorare la compatibilità e l'efficienza del prodotto.

.NET Compact Framework dipende dal del sistema operativo per l'ordinamento dei dati. L'ordinamento può pertanto produrre risultati imprevisti per alcune impostazioni cultura.

.NET Compact Framework non supporta impostazioni CurrentUICulture per i singoli thread.

Per ulteriori informazioni sul supporto per la localizzazione, vedere Codifica e localizzazione in .NET Compact Framework.

Eventi

.NET Compact Framework supporta gli eventi GotFocus e LostFocus, ma non supporta gli eventi Activated e Deactivated.

Stringhe di descrizione delle eccezioni

In .NET Compact Framework le stringhe dei messaggi di errore relativi alle eccezioni si trovano in una DLL distinta denominata System.SR.dll, che consente di risparmiare memoria.

È inoltre possibile fornire stringhe di descrizione delle eccezioni in altre lingue per localizzare le applicazioni.

Nomi e percorsi di file

In Windows Embedded CE un nome file specificato senza informazioni sul percorso viene risolto come appartenente alla directory radice del dispositivo e non alla directory dell'applicazione. Affinché l'operazione possa avvenire correttamente, è necessario specificare un percorso assoluto.

In .NET Compact Framework le stringhe URI (Uniform Resource Identifier) precedute dallo schema file:// vengono elaborate in modo diverso rispetto a quanto avviene nella versione completa di .NET Framework. Una specifica relativa quale file://myfile viene risolta come \\myfile. La stringa URI file:///myfile (con tre barre) viene risolta come \myfile nella directory principale.

È possibile ottenere la versione di un assembly con la proprietà Version, ma il relativo supporto dipende dal produttore del dispositivo e non può essere garantito.

Per ottenere il nome della directory contenente un'applicazione, vedere Procedura: visualizzare la directory dell'applicazione.

Alta risoluzione

In .NET Compact Framework 2.0 e versioni più recenti la risoluzione DPI viene gestita automaticamente nei progetti Visual Studio. Per ulteriori informazioni sull'alta risoluzione, vedere Procedura: gestire le modifiche di orientamento e risoluzione.

Input/Output (I/O)

Poiché esistono differenze tra i sistemi operativi dei dispositivi, il modello di I/O presenta vincoli e restrizioni. .NET Compact Framework non fornisce notifiche di modifica dei file.

Poiché l'I/O dei dispositivi avviene nella RAM, non è possibile accedere o impostare gli attributi dei file e delle directory.

File di installazione e CAB

È possibile utilizzare i file CAB e creare applicazioni MSI (Microsoft Windows Installer) per distribuire le applicazioni create.

Linguaggi

La versione .NET Compact Framework supporta lo sviluppo in Visual Basic e Visual C#, ma attualmente non supporta C++.

Matematiche

Non tutti i metodi matematici sono supportati in tutte le piattaforme per dispositivi, tuttavia sono inclusi nell'interfaccia API per garantire la compatibilità.

Memoria

.NET Compact Framework è ottimizzato per sistemi alimentati a batteria e consente di evitare un uso eccessivo della RAM e dei cicli della CPU. Per ulteriori informazioni su come risparmiare memoria, vedere Gestione della memoria del dispositivo in .NET Compact Framework e Procedura: migliorare le prestazioni.

Rete

.NET Compact Framework include classi IrDA (Infrared Data Association) che consentono di effettuare connessioni a infrarossi e classi in ascolto sul Web per soddisfare le richieste HTTP ricevute dal dispositivo. Tali classi sono disponibili solo in .NET Compact Framework. Per ulteriori informazioni, vedere la classe Operazioni in rete e connettività in .NET Compact Framework.

Codice proxy

.NET Compact Framework non supporta tutto il codice generato dallo Strumento del linguaggio di descrizione dei servizi Web (Wsdl.exe). Per determinare quale codice non è supportato, vedere Procedura: utilizzare un proxy generato da Wsdl.exe.

Reflection

.NET Compact Framework non supporta lo spazio dei nomi System.Reflection.Emit.

.NET Compact Framework attualmente non supporta l'operatore di uguaglianza (==) quando vengono confrontati oggetti di reflection quali MethodInfo, FieldInfo, PropertyInfo, EventInfo, MemberInfo, MethodBase, ConstructorInfo e ParameterInfo. Come alternativa, vedere Implementazione del metodo Equals.

Servizi remoti

.NET Compact Framework non supporta i servizi remoti. Per soluzioni alternative, vedere Accodamento messaggi in .NET Compact Framework.

Sicurezza

Nell'argomento Protezione in .NET Compact Framework sono descritte le differenze tra i vari modelli di sicurezza nonché riportate considerazioni sulla sicurezza in generale.

Serializzazione

Per motivi legati alle dimensioni e alle prestazioni, .NET Compact Framework non supporta la serializzazione binaria tramite BinaryFormatter o la serializzazione SOAP tramite SoapFormatter.

In .NET Compact Framework è tuttavia disponibile il supporto della serializzazione per la trasmissione dei dati degli oggetti mediante SOAP nei servizi Web XML e la serializzazione di DataSet in XML.

Dimensione

.NET Compact Framework corrisponde all'8% della versione completa del package ridistribuibile di .NET Framework. La dimensione su disco risulta inferiore del 50% a causa della compressione del file system di Windows Embedded CE.

Socket

Non sono supportate tutte le opzioni relative ai socket. Per ulteriori informazioni, vedere Programmazione dei socket.

Manipolazione di stringhe, espressioni regolari

Le applicazioni che utilizzano le espressioni regolari in .NET Compact Framework non sono compatibili a livello binario con le applicazioni che utilizzano le espressioni regolari nella versione completa di .NET Framework, ma lo sono a livello di codice sorgente.

Thread

Un'applicazione .NET Compact Framework consente di creare fino a quattro thread:

  • Un thread dell'applicazione principale.

  • Un thread utilizzato per controllare timer e timeout di intervalli diversi che possono essere pianificati dal sistema o dalle applicazioni.

  • Un thread utilizzato per tenere traccia delle modifiche apportate alle interfacce TCP/IP attive, simulando il comportamento di rilevamento dei supporti presente in Windows XP ma non in Windows Embedded CE.

  • Un thread utilizzato per eseguire gli oggetti finalizzatori. Tale thread viene creato quando il primo oggetto finalizzabile viene sottoposto a Garbage Collection.

Per ulteriori informazioni sul supporto del threading, vedere Threading in .NET Compact Framework.

Intervalli di tempo

La proprietà Now restituisce un valore specifico solo ai secondi, non ai millisecondi. È possibile ottenere una misurazione più precisa utilizzando la proprietà TickCount.

Timer

I metodi Start e Stop di un oggetto System.Timers.Timer non sono supportati, ma è possibile avviare e interrompere la temporizzazione impostando la proprietà Enabled di un oggetto System.Windows.Forms.Timer su true o false.

Funzionalità My di Visual Basic

.NET Compact Framework supporta la funzionalità My di Visual Basic (vedere Sviluppo con My), tranne che per gli oggetti My seguenti:

  • My.Application

  • My.Computer

  • My.User

  • My.Settings

Servizi Web

Il client con i servizi Web esegue direttamente gli assembly generati mediante wsdl.exe.

Non utilizzare localhost per creare un servizio Web nel dispositivo, poiché localhost fa riferimento al dispositivo che esegue l'applicazione. Utilizzare invece il nome o l'indirizzo IP del computer.

XML

Per motivi di dimensioni, .NET Compact Framework non supporta la convalida degli schemi XML. È invece supportato il modello DOM (Document Object Model) XML. Per ulteriori informazioni, vedere la classe Accesso ai dati e supporto XML in .NET Compact Framework.

Vedere anche

Altre risorse

Cenni preliminari su .NET Compact Framework