Antonio Feliziani
a- a+

Cenni preliminari su .NET Framework

.NET Framework è un componente integrante di Windows che supporta la generazione e l'esecuzione di applicazioni di nuova generazione e servizi Web XML. .NET Framework è progettata per ottenere gli obiettivi indicati di seguito:

  • Fornire un ambiente di programmazione orientato agli oggetti coerente, sia che il codice degli oggetti sia memorizzato ed eseguito localmente, eseguito localmente ma distribuito su Internet oppure eseguito in modalità remota.
  • Fornire un ambiente di esecuzione del codice che minimizzi la distribuzione del software e i conflitti di versioni.
  • Fornire un ambiente di esecuzione del codice che permetta un'esecuzione sicura anche dei codici creati da produttori sconosciuti o semi-trusted.
  • Fornire un ambiente di esecuzione del codice che elimini i problemi di prestazioni degli ambienti basati su script o interpretati.
  • Rendere coerente l'esperienza dello sviluppatore attraverso tipi molto vari di applicazioni, quali applicazioni basate su Windows e applicazioni basate sul Web.
  • Generare tutte le comunicazioni in base agli standard industriali per assicurare che il codice basato su .NET Framework possa integrarsi con qualsiasi altro codice.

.NET Framework presenta due componenti principali: Common Language Runtime e la libreria di classi .NET Framework. Common Language Runtime rappresenta la base di .NET Framework e può essere considerato come un agente che gestisce il codice in fase di esecuzione, fornendo servizi di base quali gestione della memoria, gestione di thread e servizi remoti, attivando al contempo una rigida indipendenza dei tipi e altre forme di accuratezza del codice che permettano protezione ed efficienza. Il concetto di gestione del codice è infatti un principio fondamentale di runtime. Il codice destinato al runtime è definito codice gestito, mentre quello non destinato al runtime è definito codice non gestito. La libreria di classi, l'altro componente principale di .NET Framework, è un insieme completo orientato agli oggetti di tipi riutilizzabili che possono essere impiegati nello sviluppo delle applicazioni, da quelle tradizionali della riga di comando o con interfaccia utente grafica (GUI, Graphical User Interface) a quelle basate sulle più recenti innovazioni fornite da ASP.NET, quali Web Form e servizi Web XLM.

.NET Framework può essere contenuto da componenti non gestiti che caricano Common Language Runtime nei processi e avviano l'esecuzione del codice gestito, creando così un ambiente software in grado di sfruttare funzionalità gestite e non gestite. .NET Framework non fornisce solo diversi host di runtime ma supporta anche lo sviluppo di host di runtime di altri produttori.

In ASP.NET è ad esempio disponibile il runtime per fornire un ambiente lato server scalabile per il codice gestito. È possibile utilizzare ASP.NET direttamente con il runtime per attivare applicazioni ASP.NET e servizi Web XLM, entrambi trattati più avanti in questo argomento.

Internet Explorer è un esempio di applicazione non gestita che contiene il runtime, in forma di estensione di tipo MIME. L'hosting del runtime tramite Internet Explorer consente di incorporare componenti gestiti o controlli Windows Form nei documenti HTML. Questo tipo di hosting rende possibile il codice mobile gestito, simile ai controlli Microsoft® ActiveX®, ma con significativi miglioramenti che solo il codice gestito può offrire, ad esempio l'esecuzione semi-trusted e l'archiviazione di file isolati.

Nella seguente illustrazione viene mostrata la relazione di Common Language Runtime e libreria di classi con le applicazioni e con l'intero sistema. Viene inoltre mostrato come opera il codice gestito all'interno di un'architettura più ampia.

.NET Framework nel contesto

Diagramma

Nelle sezioni che seguono vengono descritti più dettagliatamente i principali componenti e le principali funzionalità di .NET Framework.

 

Funzionalità di Common Language Runtime

Common Language Runtime gestisce la memoria, l'esecuzione di thread, l'esecuzione del codice, la verifica della protezione del codice, la compilazione e altri servizi di sistema. Queste funzionalità sono intrinseche al codice gestito che viene eseguito sul Common Language Runtime.

Per quanto riguarda la protezione, ai componenti gestiti vengono assegnati vari gradi di attendibilità in base a diversi fattori fra cui l'origine, ad esempio Internet, una rete aziendale o un computer locale. Un componente gestito quindi può essere o non essere in grado di eseguire operazioni di accesso a file, o al registro di sistema o altre funzioni riservate anche se utilizzato nella stessa applicazione attiva.

La protezione di accesso al codice è messa in atto dal runtime. Gli utenti possono ad esempio consentire a un eseguibile incorporato in una pagina Web di eseguire un'animazione sullo schermo o una canzone, ma non di accedere ai propri dati personali, al file system o alla rete. Le funzionalità di protezione del runtime consentono pertanto al software lecito distribuito su Internet di essere particolarmente ricco di funzionalità.

L'efficienza del codice è inoltre attivata dal runtime mediante l'implementazione di una rigida infrastruttura di verifica di tipi e codice denominata CTS (Common Type System). CTS assicura che tutto il codice gestito sia auto descrittivo. I vari compilatori di linguaggio di Microsoft e di altri produttori generano codice gestito conforme a CTS, consentendo a tale codice di utilizzare altri tipi e istanze, pur mantenendo una rigida fedeltà e indipendenza dei tipi.

Inoltre l'ambiente gestito di runtime elimina molti problemi comuni di software. Nel runtime vengono ad esempio automaticamente gestiti il layout di oggetti e i riferimenti a oggetti, i quali vengono rilasciati quando non sono più utilizzati. Questa gestione automatica della memoria risolve i due errori più comuni delle applicazioni, ossia le perdite di memoria e i riferimenti a memoria non validi.

Grazie al runtime inoltre la produttività dello sviluppatore viene accelerata. I programmatori possono ad esempio scrivere applicazioni nel linguaggio di sviluppo scelto e sfruttare tutti i vantaggi del runtime, della libreria di classi e dei componenti scritti in altri linguaggi da altri sviluppatori. Questo risultato può essere raggiunto da qualsiasi fornitore di compilatori che sceglie di utilizzare il runtime. I compilatori di linguaggio destinati a .NET Framework rendono disponibili le funzionalità di .NET Framework al codice esistente scritto in tale linguaggio, facilitando notevolmente il processo di migrazione delle applicazioni esistenti.

Benché il runtime sia progettato per i programmi software futuri, supporta anche quelli attualmente disponibili e meno recenti. L'interoperabilità tra codice gestito e non gestito consente agli sviluppatori di continuare a utilizzare i componenti COM e le DLL che risultano necessari.

Il runtime è progettato per migliorare le prestazioni. Sebbene Common Language Runtime fornisca molti servizi runtime standard, il codice gestito non viene mai interpretato. Una funzionalità denominata compilazione JIT (Just In Time) consente a tutto il codice gestito di essere eseguito nel linguaggio macchina nativo del sistema su cui è in esecuzione. Contemporaneamente, il gestore di memoria impedisce la frammentazione della memoria e aumenta la rintracciabilità dei riferimenti della memoria per migliorare ulteriormente le prestazioni.

Runtime può essere infine contenuto da applicazioni lato server a elevate prestazioni quali Microsoft® SQL Server" e Internet Information Services (IIS). Questa infrastruttura consente di utilizzare il codice gestito per scrivere logica aziendale personalizzata, continuando a sfruttare le prestazioni superiori dei migliori server aziendali del settore che supportano l'hosting del runtime.

Libreria di classi .NET Framework

La libreria di classi .NET Framework è un insieme di tipi riutilizzabili che si integrano strettamente con Common Language Runtime. La libreria di classi è orientata agli oggetti e fornisce tipi dai quali il codice gestito può derivare le funzionalità. In questo modo non solo viene semplificato l'utilizzo dei tipi .NET Framework ma viene anche ridotto il tempo necessario all'apprendimento delle nuove funzionalità di .NET Framework. È inoltre possibile integrare uniformemente i componenti di altri produttori nelle classi in .NET Framework.

Le classi di insiemi .NET Framework implementano ad esempio un insieme di interfacce che possono essere utilizzate per sviluppare classi di insiemi personalizzate. Le classi di insiemi si mescoleranno in modo uniforme alle classi in .NET Framework.

Come ci si aspetta da una libreria di classi orientata agli oggetti, i tipi .NET Framework consentono di effettuare una gamma di attività comuni di programmazione, incluse operazioni quali la gestione di stringhe, la raccolta di dati, la connettività al database e l'accesso a file. Oltre a queste attività comuni, la libreria di classi include tipi che supportano vari scenari di sviluppo specializzati. È ad esempio possibile utilizzare .NET Framework per sviluppare i seguenti tipi di applicazioni e servizi:

  • applicazioni console
  • applicazioni GUI Windows (Windows Form)
  • applicazioni ASP.NET
  • servizi Web XML
  • servizi Windows.

Le classi Windows Form ad esempio sono un insieme completo di tipi riutilizzabili che semplificano ampiamente lo sviluppo di GUI Windows. Se si scrive un'applicazione Web Form ASP.NET, è possibile utilizzare le classi Web Form.

 

Sviluppo di applicazioni client

Le applicazioni client sono le più vicine allo stile tradizionale delle applicazioni nella programmazione basata su Windows. Si tratta di tipi di applicazioni che visualizzano finestre o form sul desktop, consentendo all'utente di eseguire un'attività. Le applicazioni client includono elaboratori di testi e fogli di calcolo, nonché applicazioni aziendali personalizzate quali strumenti di immissione dati, di generazione di report e così via. Le applicazioni client generalmente utilizzano finestre, menu, pulsanti e altri elementi GUI e accedono a risorse locali quali file system e periferiche quali stampanti.

Un altro tipo di applicazione client è il tradizionale controllo ActiveX, ora sostituito dal controllo Windows Form gestito, distribuito su Internet come pagina Web. Questa applicazione è molto simile ad altre applicazioni client: viene eseguita in modo nativo, ha accesso alle risorse locali e include elementi grafici.

In passato gli sviluppatori creavano tali applicazioni utilizzando C/C++ insieme a MFC (Microsoft Foundation Classes) o a un ambiente RAD (Rapid Application Development) quale Microsoft® Visual Basic®. .NET Framework incorpora aspetti di questi prodotti esistenti in un solo ambiente di sviluppo coerente che semplifica enormemente lo sviluppo delle applicazioni client.

Le classi Windows Form contenute in .NET Framework sono progettate per essere utilizzate nello sviluppo di GUI. È possibile creare facilmente finestre di comando, pulsanti, barre degli strumenti e altri elementi dello schermo con la flessibilità necessaria per soddisfare le mutevoli esigenze aziendali.

In .NET Framework sono ad esempio disponibili proprietà semplici per regolare gli attributi visuali associati ai form. In alcuni casi il sistema operativo sottostante non supporta la modifica diretta di questi attributi, quindi .NET Framework ricrea automaticamente i form. Si tratta di uno dei molti modi in cui .NET Framework integra l'interfaccia dello sviluppatore, rendendo la codifica più semplice e coerente.

A differenza dei controlli ActiveX, i controlli Windows Form dispongono di un accesso semi-trusted al computer dell'utente. Il codice eseguito in modo binario o nativo può quindi accedere ad alcune risorse del sistema dell'utente, ad esempio elementi GUI e limitato accesso ai file, ma non è in grado di accedere ad altre o di comprometterle. A causa della protezione dell'accesso di codice, molte applicazioni che precedentemente era necessario installare sul sistema dell'utente possono ora essere distribuite sul Web. È possibile implementare le funzionalità di un'applicazione locale nelle proprie applicazioni, benché distribuite come una pagina Web.

 

Sviluppo di applicazioni server

Le applicazioni lato server nel mondo gestito sono implementate attraverso host runtime. Le applicazioni non gestite contengono Common Language Runtime, che consente al codice gestito personalizzato di controllare il comportamento del server. Questo modello fornisce tutte le funzionalità di Common Language Runtime e della libreria di classi, pur garantendo le prestazioni e la scalabilità del server host.

Nella seguente illustrazione viene mostrato uno schema di rete di base con codice gestito in esecuzione in diversi ambienti server. I server quali IIS e SQL Server possono eseguire operazioni standard mentre la logica dell'applicazione può essere eseguita tramite il codice gestito.

Codice gestito sul lato server

codice gestito

ASP.NET è l'ambiente host che consente agli sviluppatori di utilizzare .NET Framework per applicazioni basate sul Web. ASP.NET non è tuttavia soltanto un host runtime, ma è un'architettura completa per lo sviluppo di siti Web e oggetti distribuiti su Internet che utilizzano il codice gestito. Sia i Web Form che i servizi Web XML utilizzano IIS e ASP.NET come meccanismo di pubblicazione per le applicazioni e dispongono di un insieme di classi di supporto in .NET Framework.

I servizi Web XML, importante evoluzione della tecnologia basata sul Web, sono componenti di applicazioni del lato server distribuiti simili ai comuni siti Web. A differenza delle applicazioni basate sul Web tuttavia, i componenti dei servizi Web XML non dispongono di interfaccia utente e non sono destinati a browser quali Internet Explorer e Netscape Navigator. I servizi Web XML, invece, sono costituiti da componenti software riutilizzabili progettati per essere utilizzati da altre applicazioni, quali le applicazioni client tradizionali, le applicazioni basate sul Web o anche altri servizi Web XML. Di conseguenza la tecnologia dei servizi Web XML sta rapidamente indirizzando lo sviluppo e la distribuzione delle applicazioni verso l'ambiente altamente distribuito di Internet.

Chi ha utilizzato le prime versioni della tecnologia ASP noterà immediatamente i miglioramenti offerti da ASP.NET e Web Form. È ad esempio possibile sviluppare pagine Web Form in qualsiasi linguaggio che supporta .NET Framework. Non è più necessario, inoltre, che lo stesso file sia condiviso dal codice e dal testo HTTP, benché tale condivisione sia possibile, se lo si desidera. Le pagine Web Form vengono eseguite nel linguaggio macchina nativo perché, come qualsiasi altra applicazione gestita, sfruttano completamente il runtime. Viceversa, le pagine ASP non gestite utilizzano sempre gli script e sono interpretate. Le pagine ASP.NET sono più veloci, più funzionali e più facili da sviluppare delle le pagine ASP non gestite, perché interagiscono con il runtime come qualsiasi applicazione gestita.

.NET Framework fornisce inoltre un insieme di classi e di strumenti che facilitano lo sviluppo e l'utilizzo di applicazioni di servizi Web XML. I servizi Web XML sono generati su standard quali SOAP (protocollo di chiamata a procedura remota), XML (formato dati estensibile) e WSDL (Web Services Description Language, linguaggio di descrizione dei servizi Web) e ciò garantisce l'interoperabilità con le soluzioni non Microsoft.

Lo strumento WSDL incluso nell'SDK di .NET Framework ad esempio può eseguire una query in un servizio Web XML pubblicato sul Web, analizzarne la descrizione WSDL e produrre un codice sorgente C# o Visual Basic che l'applicazione può utilizzare per diventare un client del servizio Web XML. Il codice sorgente può creare classi derivate dalle classi della libreria di classi che gestisce tutte le comunicazione sottostanti utilizzando SOAP e l'analisi XML. Benché sia possibile utilizzare la libreria di classi per utilizzare direttamente i servizi Web XML, lo strumento WSDL e altri strumenti contenuti nell'SDK facilitano le operazioni di sviluppo con .NET Framework.

Se si sviluppa e pubblica un servizio Web XML, .NET Framework fornisce un insieme di classi conformi a tutti gli standard di comunicazione sottostanti, quali SOAP, WSDL e XML. Mediante queste classi, è possibile individuare la logica del servizio, senza preoccuparsi delle infrastrutture di comunicazione richieste dallo sviluppo di software distribuiti.

Analogamente alle pagine Web Form nell'ambiente gestito, il servizio Web XML verrà infine eseguito con la velocità del linguaggio macchina nativo utilizzando la comunicazione scalabile IIS.



Ti potrebbe interessare anche

commenta la notizia

Ci sono 2 commenti