Il framework .NET
INTRODUZIONE
Un po’ di storia
 Sin dalla prima versione del sistema operativo Windows (1990 circa),
nacque la necessità di far comunicare gli applicativi.
 Vennero sviluppate, dalle maggiori società, diverse soluzioni: Microsoft
presentò prima le DDE, Dynamic Data Exchange e poi le DCOM,
Distributed Common Object Model, mentre altre società di grosso
calibro, come Sun e IBM rispondevano con CORBA e altri sistemi.
 Tutti questi sistemi soddisfacevano alcune esigenze, permettevano
magari di intercambiare informazioni in maniera agevole e dinamica
all’interno dello stesso sistema operativo, ma difficilmente tra sistemi
differenti (è il caso delle DCOM). Oppure erano progettate proprio per
lo scambio di dati a prescindere dalla piattaforma, come CORBA, ma la
loro programmazione era complicatissima.
 Microsoft ha proposto la sua risposta a questo problema con
l’introduzione della piattaforma .NET (.NET Framework).
Cos’è un framework
 Un framework (letteralmente area di lavoro) è una
struttura mediante la quale è possibile progettare e
realizzare software.
 All’interno di un framework sono presenti gli strumenti
(librerie di base, programma di gestione ecc) in grado di
dare un prezioso aiuto allo sviluppatore che può
preoccuparsi della qualità del codice, senza dover pensare
alle interazioni a basso livello tra gli oggetti.
 Esistono molti tipi di framework e uno tra questi è il
Microsoft .NET Framework, che al suo interno comprende
una serie di linguaggi (come Visual Basic .NET, C#, J# ecc).
Il
.NET Framework contiene al suo interno una serie di linguaggi (VB.NET,
C#, J#, VC++.Net sono solo alcuni) che permettono di utilizzare tutta una
serie di tecnologie (sia in ambiente Web che Desktop), tramite una serie di
strumenti comuni.
Il linguaggio non conta
 Il linguaggio nel quale scriviamo il programma non conta.
Tutti i linguaggi appartenenti al .NET Framework (sia
Visual Basic, C#, J# o Perl .NET) sono performanti allo
stesso modo.
 Proprio perché il framework si basa su una serie di regole
comuni, tutti i linguaggi della famiglia .NET sono
interoperabili: è possibile, per esempio, scrivere una
libreria di funzioni (Assembly in inglese) in Visual Basic ed
utilizzarla in un programma in C#.
 E’ possibile, per esempio, creare un sito web utilizzando
qualche pagina in C#, qualche pagina in VB.NET e qualche
altra pagina ancora in Perl .NET! E il risultato sarà sempre
invariato.
I linguaggi
 Tutti i linguaggi
all’interno del framework
hanno le stesse
caratteristiche e le stesse
performance.
 Un programma scritto in
C# è ugualmente
potente (o veloce) di un
programma scritto in
Visual Basic .NET.
 E’ possibile utilizzare una
DLL creata in Perl .NET
da un programma creato
in J#!
IL – Intermediate Language
 Supponiamo di creare un piccolo software per la lettura della posta elettronica






(un comune client come può essere Eudora o Outlook), realizzandolo in Visual
Basic .NET (o C# o J#).
Per poter realizzare il programma sarà possibile utilizzare dei programmi di
sviluppo (come Visual Studio) oppure semplicemente notepad.
Una volta creato tutto il codice sorgente, provvederemo a compilarlo nel suo
linguaggio specifico (VB.NET in questo caso).
A questo punto subentra una delle caratteristiche principali del framework
.NET: il linguaggio intermedio.
In realtà, al momento della compilazione, noi abbiamo “tradotto” il programma
da un linguaggio umanamente comprensibile, come Visual Basic .NET, in un
linguaggio pronto per essere utilizzato dalla macchina, il linguaggio intermedio.
Qualsiasi sia il linguaggio in cui viene creato un applicativo in .NET, al
momento in cui il programmatore lo compila, lo trasforma automaticamente in
linguaggio intermedio.
Questo linguaggio intermedio (IL – Intermediate Language) non è tuttavia, il
risultato finale.
JIT
 Prima di poter essere effettivamente utilizzato, il nostro
programma subirà una ulteriore mutazione: verrà infatti
compilato nuovamente, questa volta ad opera del JIT (Just
In Time Activation), in linguaggio nativo (codice
macchina).
 Questo è l’ultimo passaggio e adesso il software è pronto
per essere utilizzato.
 Il Jit è un elemento del framework che si attiva
automaticamente (e quindi provvede ad effettuare
automaticamente la compilazione) la prima volta che viene
eseguito il nostro applicativo.
I passi della compilazione
 Viene creato il software utilizzando un qualsiasi linguaggio
di programmazione .NET (come Visual Basic .NET o C#)
 Lo sviluppatore effettua la prima compilazione,
trasformando dal codice sorgente al codice intermedio il
suo programma.
 La prima volta che il programma viene eseguito, il .NET
Framework compila ulteriormente il programma,
trasformandolo da IL in codice nativo.
 Tutte le successive esecuzioni dello stesso programma non
faranno più scattare la compilazione: solo nel caso che il
programma venga modificato interverrà nuovamente il JIT.
Tipi di dato comuni
 Sia che si tratti di un programma desktop (per esempio un
client di posta elettronica) fatto in C#, che di un sito web
creato in Visual Basic, i tipi di dati (stringhe, interi, ecc)
saranno gli stessi.
 Tutti i dati, di tutti i linguaggi, all’interno del framework
derivano da una “base” comune e sono, pertanto utilizzabili
attraverso più linguaggi!
 Senza effettuare nessuna forma di conversione posso
utilizzare un intero creato in C# da un applicativo in Visual
Basic, senza rischiare mai di perdere dati o corromperli!
Common Language Runtime
 Il Common Language Runtime raggruppa al suo interno tutti quei
componenti che costituiscono la base del framework .NET, come il
Garbage Collector (gestore della memoria) e il Jit.
 Il .NET framework è l’implementazione, ovvero la messa in pratica, di
una serie di regole standard condivise a livello mondiale.
 L’insieme di queste regole viene definito CLI, ovvero Common
Language Interface. Pertanto tutti i sistemi, anche presenti su
piattaforme differenti, che si basino sulle regole sancite nel CLI,
saranno compatibili tra di loro!
 Semplificando possiamo dire che il CLI specifica come si debba
comportare una piattaforma nella gestione della memoria e degli
applicativi.
Sintesi
 Il Framework .NET è una piattaforma che si basa su delle regole
standard e aperte. Queste regole indicano sostanzialmente come debba
essere gestita la memoria e quali sono i tipi di dati che possono essere
utilizzati.
 • Le regole sono descritte all’interno del CLI (Common Language
Interface) e del CTS (Common Type System), mentre le loro
implementazioni nel framework sono il CLR (Common Language
Runtime )e il CLS.
 • Qualsiasi piattaforma che si basi sulle stesse regole sarà compatibile
con il framework .NET e quindi sarà possibile utilizzare
trasversalmente i componenti (quelli del framework nell’altra
piattaforma e viceversa) a prescindere dal sistema operativo in cui si
trovano.
 • Con il .NET Framework la deallocazione delle risorse avviene in
maniera automatica, ad opera del Garbage Collector.
Scarica

Appendice .NET - Alberto Ferrari