Novità di .NET Framework versione 3.5

Aggiornamento: novembre 2007

In questo argomento vengono fornite informazioni su funzionalità nuove e avanzate in .NET Framework versione 3.5. 

.NET Compact Framework

In .NET Compact Framework versione 3.5 viene esteso il supporto per le applicazioni mobili distribuite mediante l'inclusione della tecnologia Windows Communication Foundation (WCF). Vengono inoltre aggiunte nuove funzionalità del linguaggio tra cui LINQ, nuove API basate sui commenti e suggerimenti della community e viene migliorato il debug con strumenti e funzionalità di diagnostica aggiornati.

Per ulteriori informazioni su questi miglioramenti e funzionalità nuovi, vedere Novità di .NET Compact Framework 3.5.

ASP.NET

In .NET Framework 3.5 sono inclusi miglioramenti in aree mirate di ASP.NET e Visual Web Developer, il più significativo dei quali riguarda il supporto migliorato per lo sviluppo di siti Web con supporto AJAX. ASP.NET supporta lo sviluppo AJAX basato su server con un insieme di nuovi controlli server e API. È possibile attivare una pagina ASP.NET 2.0 esistente per AJAX aggiungendo un controllo ScriptManager e un controllo UpdatePanel, in modo che la pagina possa essere aggiornata senza richiedere un aggiornamento a pagina intera.

ASP.NET supporta inoltre lo sviluppo AJAX basato su client con una nuova libreria client detta Microsoft AJAX Library. La Microsoft AJAX Library supporta lo sviluppo basato su client orientato a oggetti, che è indipendente dal browser. Utilizzando le classi della libreria in ECMAScript (JavaScript) è possibile attivare comportamenti dell'interfaccia utente complessi senza roundtrip al server. È possibile utilizzare congiuntamente lo sviluppo basato su server e basato su client per soddisfare le esigenze dell'applicazione. Inoltre, in Visual Web Developer è incluso il supporto IntelliSense migliorato per JavaScript e il supporto per Microsoft AJAX Library.

ASP.NET e Visual Web Developer supportano ora la creazione di servizi Web ASMX e basati su WCF e l'utilizzo diretto dell'implementazione di entrambi da pagine Web utilizzando Microsoft AJAX Library. Inoltre, i servizi applicativi sul lato server, tra cui l'autenticazione basata su form, la gestione dei ruoli e i profili, ora sono esposti come servizi Web utilizzabili nelle applicazioni compatibili con WCF, inclusi script client e client Windows Form. ASP.NET consente a tutte le applicazioni basate su Web di condividere questi servizi applicativi comuni.

Gli altri miglioramenti in ASP.NET includono un nuovo controllo dati, ListView, per la visualizzazione dei dati; un nuovo controllo origine dati, LinqDataSource, che espone Language Integrated Query (LINQ) agli sviluppatori Web tramite le architetture di controllo origine dati di ASP.NET; un nuovo strumento, Strumento di unione di ASP.NET (Aspnet_merge.exe), per l'unione degli assembly precompilati, nonché una stretta integrazione con IIS 7.0. ListView è un controllo ampiamente personalizzabile mediante stili e modelli, che supporta inoltre operazioni di modifica, inserimento ed eliminazione, oltre a funzionalità di ordinamento e spostamento. La funzionalità di spostamento per ListView viene fornita dal nuovo controllo DataPager. È possibile utilizzare il nuovo strumento di unione per combinare assembly per supportare una gamma di scenari di distribuzione e gestione del rilascio. Mediante l'integrazione di ASP.NET e IIS 7.0 è possibile utilizzare servizi ASP.NET, quali l'autenticazione e la memorizzazione nella cache, per qualsiasi tipo di contenuto e sviluppare moduli della pipeline del server nel codice gestito ASP.NET. Viene inoltre supportata la configurazione unificata di moduli e gestori.

Altri miglioramenti in Visual Web Developer includono il supporto di diverse versioni (multitarget), l'inclusione di progetti applicazione Web, una nuova visualizzazione Progettazione, nuovi strumenti di progettazione CSS (Cascading Style Sheets) e il supporto per LINQ per i database SQL. Il supporto di diverse versioni consente di utilizzare Visual Web Developer per lo sviluppo di applicazioni Web per versioni specifiche di .NET Framework, incluse le versioni 2.0, 3.0 e 3.5.

Per ulteriori informazioni, vedere Novità di ASP.NET e dello sviluppo Web.

Componenti aggiuntivi ed estensibilità

L'assembly System.AddIn.dll in .NET Framework 3.5 offre un livello di supporto potente e flessibile per gli sviluppatori di applicazioni estensibili. Introduce una nuova architettura e un modello che consente agli sviluppatori di iniziare in modo più semplice ad aggiungere estensibilità a un'applicazione, assicurando che le estensioni continueranno a funzionare anche a seguito di modifiche dell'applicazione host. Il modello offre le funzionalità seguenti:

  • Individuazione

    È possibile trovare e gestire facilmente insiemi di componenti aggiuntivi in più percorsi di un computer con la classe AddInStore. È possibile utilizzare questa classe per cercare e ottenere informazioni sui componenti aggiuntivi per i tipi di base senza doverli caricare.

  • Attivazione

    Dopo la scelta di un componente aggiuntivo da parte di un'applicazione, la classe AddInToken consente di attivarlo con facilità. È sufficiente scegliere il livello di isolamento e sandboxing. Tutte le successive operazioni verranno eseguite automaticamente dal sistema.

  • Isolamento

    È presente il supporto incorporato per l'isolamento dei domini applicazione e dei processi dei componenti aggiuntivi. Il livello di isolamento per ogni componente aggiuntivo è controllato dall'host. Il sistema gestisce il caricamento dei domini applicazione e dei processi e la relativa chiusura dopo l'arresto dell'esecuzione dei componenti aggiuntivi.

  • Sandboxing

    È possibile configurare facilmente i componenti aggiuntivi con un livello di attendibilità predefinito o personalizzato. Il supporto include set di autorizzazioni per Internet, Intranet, attendibilità totale e "come per l'host", oltre a overload che consentono all'host di specificare un set di autorizzazioni personalizzato.

  • Composizione dell'interfaccia utente

    Il modello di componente aggiuntivo supporta la composizione diretta di controlli Windows Presentation Foundation (WPF) che si estendono oltre i limiti del dominio applicazione. È possibile consentire ai componenti aggiuntivi di contribuire direttamente all'interfaccia utente dell'host continuando tuttavia a mantenere i vantaggi dell'isolamento, la possibilità di scaricamento, il sandboxing e il controllo delle versioni.

  • Controllo delle versioni

    L'architettura del componente aggiuntivo consente agli host di introdurre nuove versioni del proprio modello a oggetti senza interrompere i componenti aggiuntivi esistenti o influire sul lavoro dello sviluppatore per quelli nuovi.

Per ulteriori informazioni, vedere Componenti aggiuntivi ed Extensibility.

Common Language Runtime

Insiemi

HashSet<T> fornisce operazioni sugli insiemi a elevate prestazioni per .NET Framework. Gli elementi contenuti in un insieme non sono duplicati e non hanno un ordine particolare. Per ulteriori informazioni, vedere Tipo di raccolta HashSet.

Diagnostica

La classe EventSchemaTraceListener fornisce l'analisi di eventi end-to-end conformi allo schema. È possibile utilizzare l'analisi end-to-end per un sistema con componenti eterogenei che superano i limiti di thread, AppDomain, processo e computer. È stato definito uno schema di eventi standardizzato (vedere Event Representation for Event Consumers (informazioni in lingua inglese)) per consentire l'analisi attraverso questi limiti. Questo schema è condiviso da varie tecnologie di analisi, inclusi gli strumenti di diagnostica di Windows Vista, ad esempio il Visualizzatore eventi. Lo schema consente inoltre l'aggiunta di elementi personalizzati purché conformi allo schema.

La classe EventSchemaTraceListener è ottimizzata per la registrazione delle prestazioni con il supporto implicito per l'analisi senza blocchi.

I/O e pipe

Le pipe forniscono la comunicazione interprocesso tra qualsiasi processo in esecuzione nello stesso computer o in qualsiasi altro computer con sistema operativo Windows all'interno di una rete. .NET Framework fornisce l'accesso a due tipi di pipe: unnamed pipe e named pipe. Per ulteriori informazioni sulle pipe, vedere Pipe.

Garbage Collection

La classe GCSettings dispone di una nuova proprietà LatencyMode che è possibile utilizzare per modificare il momento dell'intrusione del Garbage Collector nell'applicazione. Questa proprietà viene impostata su uno dei valori della nuova enumerazione GCLatencyMode.

La classe GC dispone di un nuovo overload del metodo Collect(Int32, GCCollectionMode) che è possibile utilizzare per modificare il comportamento di un Garbage Collection imposto. Ad esempio, è possibile utilizzare questo overload per specificare che il Garbage Collector dovrà determinare se quello attuale è il momento ottimale per recuperare oggetti. Questo overload accetta un valore dalla nuova enumerazione GCCollectionMode.

Riflessione e Reflection emit in attendibilità parziale

Gli assembly in esecuzione con attendibilità parziale possono generare codice ed eseguirlo. Il codice generato che chiama solo tipi e metodi pubblici non richiede autorizzazioni oltre a quelle richieste dai tipi e dai metodi a cui accede. Il nuovo costruttore DynamicMethod(String, Type, array<Type[]) facilita la generazione di tale codice.

Quando il codice generato deve accedere a dati privati, il nuovo costruttore DynamicMethod(String, Type, array<Type[], Boolean) consente un accesso limitato. L'host deve concedere l'autorizzazione ReflectionPermission con il nuovo flag RestrictedMemberAccess per attivare questa funzionalità, che consente al codice generato di accedere a dati privati solo per i tipi e metodi contenuti in assembly con livelli di attendibilità uguali o minori. Vedere Procedura dettagliata: emissione di codice in scenari di attendibilità parziale.

Per quanto riguarda la riflessione, la concessione da parte dell'host dell'autorizzazione RestrictedMemberAccess consente, in modo analogo, l'utilizzo limitato di metodi che accedono a proprietà private, chiamano metodi privati e così via, ma solo per gli assembly di destinazione con livelli di attendibilità uguali o minori.

Threading

Blocco in lettura/scrittura migliorato

La nuova classe ReaderWriterLockSlim consente di ottenere prestazioni significativamente migliori rispetto a ReaderWriterLock e paragonabili all'istruzione lock (SyncLock in Visual Basic). Le transizioni tra gli stati del blocco sono state semplificate per facilitare la programmazione e ridurre le possibilità di deadlock. La nuova classe supporta la ricorsione per semplificare la migrazione da lock e da ReaderWriterLock.

Miglioramenti delle prestazioni di ThreadPool

La velocità effettiva per l'invio degli elementi di lavoro e delle attività di I/O nel pool di thread gestiti è migliorata significativamente. L'invio viene gestito nel codice gestito, senza transizioni al codice non gestito e con un numero inferiore di blocchi. Si consiglia di utilizzare ThreadPool rispetto alle implementazioni di pool di thread specifiche dell'applicazione.

Miglioramenti relativi al fuso orario

Due tipi nuovi, DateTimeOffset e TimeZoneInfo, migliorano il supporto per i fusi orari e semplificano lo sviluppo di applicazioni utilizzando date e ore in fusi orari diversi. Per una discussione relativa ai tipi da utilizzare in particolari situazioni, vedere Scelta tra DateTime, DateTimeOffset e TimeZoneInfo.

TimeZoneInfo

La nuova classe TimeZoneInfo sostituisce ampiamente la classe TimeZone esistente. È possibile utilizzare TimeZoneInfo per recuperare qualsiasi fuso orario definito nel Registro di sistema, anziché solo il fuso orario locale e UTC (Coordinated Universal Time). È inoltre possibile utilizzare questa classe per definire fusi orari personalizzati, serializzare e deserializzare dati di fusi orari personalizzati e convertire le ore tra fusi orari. Per ulteriori informazioni sullo sviluppo di applicazioni che utilizzano la classe TimeZoneInfo, vedere Ora e fusi orari.

DateTimeOffset

La nuova struttura DateTimeOffset estende la struttura DateTime per semplificare l'utilizzo delle ore in fusi orari diversi. La struttura DateTimeOffset consente di archiviare le informazioni relative a data e ora in formato UTC con un valore di offset che indica di quanto tale ora differisce dall'ora UTC.

Crittografia

Manifesti ClickOnce

Esistono nuove classi di crittografia per verificare e ottenere informazioni sulle firme del manifesto per le applicazioni ClickOnce. La classe ManifestSignatureInformation ottiene informazioni su una firma del manifesto quando si utilizzano i relativi overload del metodo VerifySignature. È possibile utilizzare l'enumerazione ManifestKinds per specificare i manifesti da verificare. Il risultato della verifica è uno dei valori di enumerazione SignatureVerificationResult. ManifestSignatureInformationCollection fornisce un insieme di sola lettura di oggetti ManifestSignatureInformation delle firme verificate. Nelle classi seguenti vengono inoltre fornite informazioni specifiche sulla firma:

Supporto per Suite B

.NET Framework 3.5 supporta l'insieme di algoritmi di crittografia Suite B pubblicati da National Security Agency (NSA). Per la documentazione di NSA, vedere www.nsa.gov/ia/industry/crypto_suite_b.cfm (informazioni in lingua inglese)

Sono inclusi gli algoritmi seguenti:

  • AES (Advanced Encryption Standard) con dimensioni della chiave di 128 e 256 bit per la crittografia.

  • SHA-256 e SHA-384 (Secure Hash Algorithm) per l'hashing.

  • ECDSA (Elliptic Curve Digital Signature Algorithm) che utilizza curve di coefficienti di numeri primi di 256 e 384 bit per la generazione della firma. Questo algoritmo viene fornito dalla classe ECDsaCng e consente di firmare con una chiave privata ed effettuare la verifica con una chiave pubblica.

  • ECDH (Elliptic Curve Diffie-Hellman) che utilizza curve di coefficienti di numeri primi di 256 e 384 bit per lo scambio di chiave e la generazione della chiave privata. Questo algoritmo viene fornito dalla classe ECDiffieHellmanCng

Nelle nuove classi AesCryptoServiceProvider, SHA256CryptoServiceProvider e SHA384CryptoServiceProvider sono disponibili wrapper del codice gestito per le implementazioni certificate da FIPS (Federal Information Processing Standard) delle implementazioni AES, SHA-256 e SHA-384.

Le classi Cryptography Next Generation (CNG) forniscono un'implementazione gestita dell'API di crittografia (CAPI) nativa. Elemento centrale di questo gruppo è la classe del contenitore di chiavi CngKey che astrae l'archiviazione e l'utilizzo delle chiavi CNG. Questa classe consente di archiviare in modo sicuro una coppia di chiavi o una chiave pubblica e fare riferimento a tale chiave utilizzando un semplice nome di stringa. Le classi ECDsaCng e ECDiffieHellmanCng utilizzano oggetti CngKey.

La classe CngKey viene utilizzata per una varietà di operazioni aggiuntive, incluse l'apertura, la creazione, l'eliminazione e l'esportazione di chiavi. Fornisce inoltre l'accesso all'handle di chiave sottostante da utilizzare quando le API native vengono chiamate direttamente.

Esiste una varietà di classi CNG di supporto, ad esempio CngProvider che gestisce un provider di archiviazione chiavi, CngAlgorithm che gestisce un algoritmo CNG e CngProperty che gestisce le proprietà della chiave comunemente utilizzate.

Rete

Rete peer-to-peer

La rete peer-to-peer è una tecnologia di rete senza server che consente a diversi dispositivi di rete di condividere risorse e comunicare direttamente tra loro. Lo spazio dei nomi System.Net.PeerToPeer fornisce un insieme di classi che supportano il protocollo PNRP (Peer Name Resolution Protocol) che consente l'individuazione di altri nodi peer tramite oggetti PeerName registrati all'interno di un'area peer-to-peer. PNRP può risolvere nomi peer in indirizzi IP IPv6 o IPv4.

Collaborazione in una rete peer-to-peer

Lo spazio dei nomi System.Net.PeerToPeer.Collaboration fornisce un insieme di classi che supportano la collaborazione utilizzando l'infrastruttura di rete peer-to-peer. Queste classi semplificano il processo mediante il quale le applicazioni possono:

  • Registrare la presenza dei peer senza un server.

  • Inviare inviti ai partecipanti.

  • Individuare i peer sulla stessa subnet o LAN.

  • Gestire i contatti.

  • Interagire con i peer.

L'infrastruttura di collaborazione peer-to-peer Microsoft fornisce un framework basato sulla rete peer-to-peer per le attività di collaborazione senza server. L'utilizzo di questo framework consente l'utilizzo di applicazioni di rete decentralizzate che utilizzano le potenzialità collettive dei computer su una subnet o su Internet. Questi tipi di applicazioni possono essere utilizzati per attività quali la pianificazione collaborativa, la comunicazione, la distribuzione del contenuto o l'esecuzione di giochi con più giocatori.

Miglioramenti delle prestazioni Socket

La classe Socket è stata migliorata in modo che possa essere utilizzata da applicazioni che utilizzano I/O sulla rete asincrona per ottenere le massime prestazioni. È stata aggiunta una serie di nuove classi come parte di un insieme di miglioramenti allo spazio dei nomi Socket. Queste classi forniscono un modello asincrono alternativo che può essere utilizzato dalle applicazioni socket a elevate prestazioni specializzate. Questi miglioramenti sono stati progettati in modo specifico per applicazioni server di rete che richiedono prestazioni elevate.

Windows Communication Foundation

Integrazione tra WCF e WF - Servizi di flusso

.NET Framework 3.5 unifica i framework Windows Workflow Foundation (WF) e Windows Communication Foundation (WCF) per consentire l'utilizzo di WF per creare servizi WCF o esporre il flusso di lavoro WF esistente come servizio. Ciò consente di creare servizi che possono essere salvati in modo permanente, di trasferire facilmente dati da e verso un flusso di lavoro e di applicare protocolli a livello di applicazione. Per ulteriori informazioni, vedere Creazione di servizi flusso di lavoro e di servizi durevoli. Per visualizzare esempi di codice, vedere Esempi di Servizi del flusso di lavoro.

Servizi permanenti

In .NET Framework 3.5 viene introdotto il supporto per i servizi WCF che utilizzano il modello di persistenza WF per salvare in modo permanente le informazioni sullo stato del servizio. In questi servizi permanenti vengono mantenute le relative informazioni sullo stato nel livello dell'applicazione, in modo che se una sessione viene eliminata e ricreata in un secondo momento, le informazioni sullo stato per quel servizio possano essere ricaricate dall'archivio di persistenza. Per ulteriori informazioni, vedere Creazione di servizi flusso di lavoro e di servizi durevoli. Per un esempio di codice, vedere Esempio di servizio durevole.

Modello di programmazione Web WCF

Il modello di programmazione WCF consente agli sviluppatori di compilare servizi Web con WCF. Tale modello include funzionalità di elaborazione URI complesse, il supporto per tutti i verbi HTTP, incluso GET, e un semplice modello di programmazione per l'utilizzo di un'ampia varietà di formati di messaggio, tra cui XML, JSON e flussi binari opachi. Per ulteriori informazioni, vedere Modello di programmazione Web. Per visualizzare esempi di codice, vedere Esempi del modello di programmazione Web.

Pubblicazione di feed WCF

In WCF è incluso un modello a oggetti fortemente tipizzato per l'elaborazione di feed, compresi i formati Atom 1.0 e RSS 2.0. Per ulteriori informazioni, vedere Diffusione WCF. Per visualizzare esempi di codice, vedere Esempi di diffusione.

WCF e attendibilità parziale

In .NET Framework 3.5 le applicazioni eseguite con autorizzazioni ridotte possono utilizzare un sottoinsieme limitato di funzionalità WCF. Le applicazioni server eseguite con autorizzazioni ASP.NET con attendibilità media possono utilizzare il modello di servizi WCF per creare servizi HTTP di base. Le applicazioni client eseguite con autorizzazioni dell'area Internet, ad esempio applicazioni browser XAML o applicazioni non firmate distribuite con ClickOnce, possono utilizzare i proxy WCF per l'utilizzo dei servizi HTTP. Inoltre le funzionalità del modello di programmazione di WCF (inclusi AJAX e Syndication) possono essere utilizzate dalle applicazioni parzialmente attendibili. Per ulteriori informazioni, vedere Attendibilità parziale. Per gli esempi di codice, vedere Esempi WCF di trust parziale.

Integrazione di AJAX tra WCF e ASP.NET

L'integrazione di WCF con le funzionalità AJAX (Asynchronous JavaScript and XML) in ASP.NET fornisce un modello di programmazione end-to-end per la compilazione di applicazioni Web che possono utilizzare servizi WCF. Nelle applicazioni Web AJAX il client, ad esempio il browser in un'applicazione Web, scambia piccole quantità di dati con il server utilizzando richieste asincrone. L'integrazione con le funzionalità AJAX in ASP.NET consente di compilare in modo semplice servizi Web WCF accessibili utilizzando client JavaScript nel browser. Per ulteriori informazioni, vedere Integrazione AJAX e supporto JSON. Per visualizzare esempi di codice, vedere Esempi di AJAX.

Interoperabilità dei servizi Web

In .NET Framework 3.5 viene mantenuto l'impegno di Microsoft per assicurare l'interoperabilità e la compatibilità con gli standard pubblici e viene introdotto il supporto per nuovi standard di servizi Web sicuri, affidabili e transazionali:

L'implementazione di questi protocolli è resa possibile mediante l'utilizzo delle nuove associazioni standard, <ws2007HttpBinding> e <ws2007FederationHttpBinding>, documentate in Guida di interoperabilità dei protocolli di servizi Web. Per un esempio di codice, vedere Esempi di associazioni WS.

Windows Presentation Foundation

In .NET Framework 3.5 Windows Presentation Foundation sono inclusi miglioramenti e modifiche in numerose aree, inclusi controllo della versione, modello di applicazione, associazione dati, controlli, documenti, annotazioni ed elementi dell'interfaccia utente tridimensionali.

Per ulteriori informazioni su questi miglioramenti e funzionalità nuovi, vedere Novità di Windows Presentation Foundation versione 3.5.

Windows Workflow Foundation

Integrazione tra WCF e WF - Servizi di flusso

.NET Framework 3.5 unifica i framework Windows Workflow Foundation (WF) e Windows Communication Foundation (WCF) per consentire l'utilizzo di WF per creare servizi WCF o esporre il flusso di lavoro WF esistente come servizio. Ciò consente di creare servizi che possono essere salvati in modo permanente, di trasferire facilmente dati da e verso un flusso di lavoro e di attivare protocolli a livello di applicazione. Per ulteriori informazioni, vedere Creazione di servizi flusso di lavoro e di servizi durevoli. Per visualizzare esempi di codice, vedere Esempi di Servizi del flusso di lavoro (WF).

Regole

Il motore di regole WF supporta metodi di estensione, l'overload dell'operatore e l'utilizzo del nuovo operatore nelle regole personalizzate. Per ulteriori informazioni, vedere Modifiche alle regole di .NET Framework 3.5. Per visualizzare esempi di codice, vedere Esempi di regole e condizioni.

Windows Form

Miglioramenti di ClickOnce

In ClickOnce sono stati apportati diversi miglioramenti, che includono la distribuzione da più percorsi e la personalizzazione con marchi di terze parti. Per ulteriori informazioni, vedere Distribuzione di applicazioni ClickOnce senza riapposizione della firma e Creazione di applicazioni ClickOnce per la distribuzione da parte di terzi.

Lo strumento Mage.exe, che a volte viene utilizzato con ClickOnce, è stato aggiornato per .NET Framework 3.5. Per ulteriori informazioni, vedere Strumento per la generazione e la modifica di manifesti (Mage.exe).

Servizi di autenticazione, di ruoli e di impostazioni

I nuovi servizi applicativi client introdotti in .NET Framework 3.5 consentono alle applicazioni basate su Windows, incluse le applicazioni Windows Form e Windows Presentation Foundation, di accedere facilmente ai servizi dei profili, dei ruoli e di accesso ASP.NET. Questi servizi consentono inoltre di autenticare gli utenti e di recuperare da un server condiviso le impostazioni dell'applicazione e dei ruoli utente.

È possibile attivare i servizi applicativi client specificando e configurando i provider dei servizi client nel file di configurazione dell'applicazione o in Progettazione progetti di Visual Studio. Questi provider si collegano al modello di estensibilità Web e consentono di accedere ai servizi Web mediante le API esistenti delle impostazioni, dei ruoli e di accesso a .NET Framework. I servizi dell'applicazione client supportano anche connettività occasionale archiviando e recuperando le informazioni utente da una cache di dati locale quando l'applicazione non è in linea.

Per ulteriori informazioni, vedere Servizi applicazioni client.

Supporto di Windows Vista

Le applicazioni Windows Form esistenti sono perfettamente compatibili con Windows Vista e, laddove possibile, sono state migliorate in modo da presentare lo stesso aspetto delle applicazioni scritte specificamente per Windows Vista. Le finestre di dialogo dei file comuni sono state aggiornate automaticamente alla versione Windows Vista. .NET Framework 3.5 supporta inoltre l'icona Scudo di protezione del Controllo account utente. Per ulteriori informazioni, vedere Classe FileDialog e Shield.

Supporto WPF

È possibile utilizzare Windows Form per ospitare contenuto e controlli Windows Presentation Foundation (WPF) insieme ai controlli Windows Form e, inoltre, aprire le finestre di WPF da un Windows Form. Per ulteriori informazioni sull'utilizzo congiunto di Windows Form e WPF, vedere Migrazione e interoperabilità.

LINQ

LINQ (Language-Integrated Query) è una nuova funzionalità di Visual Studio 2008 e di .NET Framework 3.5. LINQ estende le potenti funzionalità di query alla sintassi dei linguaggi C# e Visual Basic sotto forma di modelli di query standard e di facile apprendimento. Questa tecnologia può essere estesa per supportare praticamente qualsiasi tipo di archivio dati. .NET Framework 3.5 include assembly del providerLINQ che consentono l'utilizzo di LINQ per l'esecuzione di query su insiemi di .NET Framework, database SQL Server, Dataset ADO.NET e documenti XML.

I componenti di LINQ che fanno parte di .NET Framework 3.5 sono i seguenti:

  • Lo spazio dei nomi System.Linq che contiene l'insieme di operatori di query standard, oltre ai tipi e alle interfacce utilizzate nell'infrastruttura di una query LINQ. Questo spazio dei nomi è incluso nell'assembly System.Core.dll.

  • Lo spazio dei nomi System.Data.Linq, che contiene classi che supportano l'interazione con i database relazionali nelle applicazioni LINQ to SQL.

  • Lo spazio dei nomi System.Data.Linq.Mapping, che contiene classi che possono essere utilizzate per generare un modello a oggetti LINQ to SQL che rappresenta la struttura e il contenuto di un database relazionale.

  • Lo spazio dei nomi System.Xml.Linq, che contiene le classi per LINQ to XML. LINQ to XML è un'interfaccia di programmazione XML in memoria che consente di modificare documenti XML in modo semplice ed efficace. Utilizzando LINQ to XML è possibile caricare e serializzare XML, creare nuove strutture ad albero XML e modificarle in memoria ed effettuare le convalida utilizzando XSD. È inoltre possibile utilizzare una combinazione di queste funzionalità per trasformare strutture ad albero XML da una forma in un'altra.

  • Nuovi tipi negli spazi dei nomi System.Web.UI.WebControls e System.Web.UI.Design.WebControls. Questi nuovi tipi, ad esempio LinqDataSource, supportano l'utilizzo di LINQ nelle pagine Web ASP.NET tramite un controllo origine dati.

  • Le classi DataRowComparer, DataRowExtensions e DataTableExtensions nello spazio dei nomi System.Data supportano query LINQ sugli oggetti ADO.NET DataSet.

Nella libreria di classi i metodi di estensione LINQ applicabili a una classe sono elencati nei riquadri Sommario e Indice della pagina dei membri della classe.

Strutture ad albero dell'espressione

Le strutture ad albero dell'espressione sono nuove in .NET Framework 3.5 e consentono di rappresentare codice a livello di linguaggio sotto forma di dati. Lo spazio dei nomi System.Linq.Expressions contiene i tipi che costituiscono i blocchi predefiniti delle strutture ad albero dell'espressione. Questi tipi possono essere utilizzati per rappresentare tipi diversi di espressioni di codice, ad esempio una chiamata al metodo o un confronto di uguaglianza.

Le strutture ad albero dell'espressione vengono ampiamente utilizzate nelle query LINQ destinate alle origini dati remote, ad esempio un database SQL. Queste query sono rappresentate come strutture ad albero dell'espressione e questa rappresentazione consente ai provider di query di esaminarle e convertirle in un linguaggio di query specifico del dominio.

Lo spazio dei nomi System.Linq.Expressions è incluso nell'assembly System.Core.dll.

Linguaggi di programmazione

Tre linguaggi di programmazione Microsoft sono destinati esplicitamente a .NET Framework. Per ulteriori informazioni sulle funzionalità nuove e migliorate di questi linguaggi, vedere i seguenti argomenti:

Novità di Visual C#

Novità di Visual C++ 2008

Novità del linguaggio Visual Basic

Vedere anche

Concetti

Novità di ASP.NET e dello sviluppo Web

Novità di .NET Compact Framework 3.5

Novità di Windows Presentation Foundation versione 3.5

Novità di Visual Studio 2008