Framework .NET
Total Page:16
File Type:pdf, Size:1020Kb
Ingegneria del software L-A Introduzione al Framework .NET Framework .NET È un ambiente di esecuzione (runtime environment) I n g Semplifica lo sviluppo e il deployment e g n e r i Aumenta l’affidabilità del codice a d e l s Unifica il modello di programmazione o f t w a r e È completamente indipendente da COM L - A (Component Object Model) È fortemente integrato con COM 2 Laboratorio di Informatica L-B 1.1 Sviluppo semplificato Ambiente object-oriented – Qualsiasi entità è un oggetto I n g – Classi ed ereditarietà pienamente supportati e g n e – Anche tra linguaggi diversi r i a d e Riduzione errori comuni di programmazione l s o f t – w Linguaggi fortemente tipizzati – Type Checker a r e – Errori non gestiti – generazione di eccezioni L - A – Meno memory leak – Garbage Collector 3 Indipendenza dalla piattaforma .NET è un’implementazione di CLI – Common Language Infrastructure I n g CLI e il linguaggio C# sono standard ECMA e g n e r – ECMA-334 (C#), ECMA-335 (CLI) i a d e l Esistono altre implementazioni di CLI: s o f t w – SSCLI (Shared Source CLI by Microsoft, per a r e Windows, FreeBSD e Macintosh) - Rotor L - A – Mono (per Linux) – DotGNU – Intel OCL (Open CLI Library) – … 4 Laboratorio di Informatica L-B 1.2 Standard ECMA-335 Defines the Common Language Infrastructure (CLI) in which applications written in multiple high level languages may be executed in different system I n g e environments without the need to rewrite the g n e r application to take into consideration the unique i a d e characteristics of those environments l s o f CLI is a , with: t runtime environment w a r – a file format e L - A – a common type system – an extensible metadata system – an intermediate language – access to the underlying platform – a factored base class library 5 Piattaforma multi-linguaggio Libertà di scelta del linguaggio – Tutte le funzionalità del framework .NET sono I n disponibili a tutti i linguaggi .NET g e g n – I componenti di un’applicazione possono essere e r i a scritti con diversi linguaggi d e l s o Impatto sui tool f t w a r – Tool disponibili per tutti i linguaggi: e L - A Debugger, Profiler, ecc. 6 Laboratorio di Informatica L-B 1.3 Framework .NET Concetti chiave: – (Microsoft) Intermediate Language - (MS)IL I n g – Common Language Runtime - CLR e g n ambiente di esecuzione runtime per le applicazioni .NET e r i il codice che viene eseguito sotto il suo controllo si dice a d e codice gestito (managed) l s o f t – Common Type System - CTS w a r tipi di dato supportati dal framework .NET e L - consente di fornire un modello di programmazione unificato A – Common Language Specification - CLS regole che i linguaggi di programmazione devono seguire per essere interoperabili all’interno del framework .NET sottoinsieme di CTS 7 Codice interpretato I n g e g n e r i a d e l Esecuzione s Sorgenti o Interprete f t w a r e L - A 8 Laboratorio di Informatica L-B 1.4 Codice nativo I n Sorgenti g Compilatore e g n e r i a d e l s o f t w a r e L - A Codice nativo Esecuzione (.EXE) 9 Codice IL Codice Compilatore IL I n Sorgenti g e .NET g (Assembly) n e .EXE/.DLL r i a d e l s o f t w a r e L - A Compilatore Codice Esecuzione JIT nativo 10 Laboratorio di Informatica L-B 1.5 Codice IL Codice Compilatore IL I n Sorgenti g e .NET (Assembly) g n e .EXE/.DLL r i a d Codice + e l s o metadati f t w a r e L - A Compilatore Codice Esecuzione JIT nativo 11 Codice IL Ambiente di Codice Sorgenti Compilatoerseecuzione IL I n g .NET.NET Runtime (Assembly) e g n .EXE/.DLL e r i a d e l s o f t w a r e L - A Compilatore Codice Esecuzione JIT nativo 12 Laboratorio di Informatica L-B 1.6 Assembly Unità minima per la distribuzione, il versioning e la security – 1+ file I n g e g Manifest n e r i – Metadati che descrivono l’assembly stesso a d e l Type metadata s o f t – w Metadati che descrivono completamente tutti i tipi contenuti a r e nell’assembly L - A Codice in Intermediate Language – Ottenuto da un qualsiasi linguaggio di programmazione Risorse – Immagini, icone, … 13 Assembly Single-File Assembly Multi-File Assembly Util.dll I n g e Calc.dll g Calc.dll Type Metadata n e r i Manifest a Manifest d e l s o Type Metadata IL Code f t Type Metadata w a r e L - A IL Code IL Code Pict.gif Resource Resources 14 Laboratorio di Informatica L-B 1.7 Assembly .assembly Hello { } .assembly extern mscorlib { } .method public static void main() I n g { e g n e .entrypoint r i a d ldstr "Hello IL World!" e l s o call void [mscorlib]System.Console::WriteLine f t w (class System.String) a r e ret L - A } ilasm helloil.il 15 Assembly Assembly privati – Utilizzati da un’applicazione specifica – Directory applicazione (e sub-directory) I n g e g Assembly condivisi n e r i – Utilizzati da più applicazioni a d e – Global Assembly Cache (GAC) l s o f – c:\windows\assembly t w a r e Assembly scaricati da URL L - A – Download cache – c:\windows\assembly\download GACUTIL.EXE – Tool per esaminare GAC e download cache 16 Laboratorio di Informatica L-B 1.8 Deployment semplificato Installazione senza effetti collaterali – Applicazioni e componenti possono essere I n condivisi o g e g n privati e r i a d Esecuzione side-by-side e l s o – Diverse versioni dello stesso componente possono f t w a coesistere, anche nello stesso processo r e L - A 17 Metadati Descrizione dell’assembly - Manifest – Identità: nome, versione, cultura [, public key] I n – Lista dei file che compongono l’assembly g e g – n Riferimenti ad altri assembly da cui si dipende e r i a – Permessi necessari per l’esecuzione d e l s o Descrizione dei tipi contenuti nell’assembly f t w a – Nome, visibilità, classe base, interfacce r e L – - Campi, metodi, proprietà, eventi, … A Attributi – Definiti dal compilatore – Definiti dal framework – Definiti dall’utente 18 Laboratorio di Informatica L-B 1.9 Tool che usano i metadati Compilatori – Compilazione condizionale I n g Ambienti RAD e g n e r – Informazioni sulle proprietà dei componenti i a d e Categoria l s o Descrizione f t w a r – Editor personalizzati di tipi di proprietà e L - A Analisi dei tipi e del codice – Intellisense – ILDASM – Anakrino, Reflector 19 Common Language Runtime VB C++ C# JScript … I n Common Language Specification g e g n e r i a Web User d e Services Interface l s o f t w a r Data and XML e L - A Base Class Library Common Language Runtime 20 Laboratorio di Informatica L-B 1.10 Common Language Runtime IL CLR offre vari servizi alle applicazioni Managedcode (MSIL) I n g e g n e r i Common Language a d e Runtime(CLR) l s o f t w a Funzionalità specifiche di CLR Funzionalità esistenti (es. I/O r e L (es. Garbage Collector) su file) mediate da CLR - A Sistema operativo (Win32, …) 21 Common Language Runtime Base Class Library Support I n Thread Support COM Marshaler g e g n e r i a Type Checker Exception Manager d e l s o f t w Security Engine Debug Engine a r e L - A MSIL to Native Code Garbage Compilers (JIT) Manager Collector (GC) Class Loader 22 Laboratorio di Informatica L-B 1.11 Sicurezza e affidabilità del codice Separazione spazi di memoria in un processo con AppDomain I n g Controllo del codice e sicurezza dei tipi e g n e – r Cast non sicuri i a d e – Variabili non inizializzate l s o f t – Accessi ad array oltre i limiti di allocazione w a r e L - A 23 Garbage Collector Garbage Collector per tutti gli oggetti .NET Gestione del ciclo di vita degli oggetti I n g e Gli oggetti vengono distrutti automaticamente g n e r i quando non sono più referenziati a d e l s A differenza di COM, non ci si basa sul o f t w Reference Counting a r e L – - Maggiore velocità di allocazione A – Consentiti i riferimenti circolari – Perdita della distruzione deterministica Algoritmo Mark-and-Compact 24 Laboratorio di Informatica L-B 1.12 Garbage Collector e distruzione deterministica In alcuni casi serve un comportamento di finalizzazione deterministica I n – g Riferimenti a oggetti non gestiti e g n e – Utilizzo di risorse che devono essere rilasciate r i a d appena termina il loro utilizzo e l s o f Non è possibile utilizzare il metodo Finalize t w a r e (in C# il distruttore), in quanto non è L - A richiamabile direttamente È necessario implementare l’interfaccia IDisposable 25 Gestione delle eccezioni Un’eccezione è – Una condizione di errore – Un comportamento inaspettato I n g e incontrato durante l’esecuzione del programma g n e r Un’eccezione può essere generata dal i a d – Codice del programma in esecuzione e l s – o Ambiente di runtime f t w a In CLR, un’eccezione è un oggetto che eredita dalla r e L classe System.Exception - A Gestione uniforme - elimina – Codici HRESULT di COM – Codici di errore Win32 – … 26 Laboratorio di Informatica L-B 1.13 Gestione delle eccezioni Concetti universali – Lanciare un’eccezione (throw) I n – g Catturare un’eccezione (catch) e g n e – Eseguire codice di uscita da un blocco controllato r i a d (finally) e l s o f Disponibile in tutti i linguaggi .NET t w a r e con sintassi diverse L - A 27 Altri servizi del CLR Reflection – Analisi dei metadati di un assembly I n g – Generazione di un assembly dinamico e g n e r Remoting i a d e – Chiamata di componenti remoti (.NET) l s o f t w Interoperabilità (COM, Platform Invoke) a r e L - A 28 Laboratorio di Informatica L-B 1.14 Reflection È possibile interrogare un assembly caricato in memoria I n – g Tipi (classi, interfacce, enumeratori, etc.) e g n e – Membri (attributi, proprietà, metodi, etc.) r i a d – Parametri e l s o f t È possibile forzare il caricamento in memoria di w a r e un assembly con i