NET Framework
Transcript
NET Framework
Dipartimento di Sistemi e Informatica, University of Florence Sistemi Distribuiti Corso di Laurea in Ingegneria g g Prof. Paolo Nesi PARTE 8: .net Framework Department of Systems and Informatics University of Florence Via S S. Marta 33, 50139 50139, Firen Firenze, e Ital Italy tel: +39-055-4796523, fax: +39-055-4796363 Lab: DISIT, Sistemi Distribuiti e Tecnologie Internet [email protected] [email protected] www: http://www.dsi.unifi.it/~nesi Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 1 A problem of communication Applicatio n Code and data structures Before B f RPC RPC-style t l models, d l applications were completely separate entities with little or no integration… Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 2 Sistemi Distribuiti, Prof. Paolo Nesi 1 Dipartimento di Sistemi e Informatica, University of Florence A problem of communication …but b t with ith RPC or COM, COM you still have to write ‘plumbing’ code and can’t directly interact… Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 3 The .NET Approach … a common language runtime provides components a common substrate. No “plumbing” is needed and objects can directly interact. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 4 Sistemi Distribuiti, Prof. Paolo Nesi 2 Dipartimento di Sistemi e Informatica, University of Florence .NET Framework and Tools VB C++ C# J# … Common Language Specification ASP .NET Web Forms Web Services Mobile Internet Toolkit Windows Forms ADO .NET and XML Base Class Library Common Language Runtime Operating System Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 5 Codici G Evoluzione Codice nativo Codice interpretato Codice MSIL G IL: G MSIL: Intermediate Language, Standard ECMA del 1997 Microsoft IL, Implementazione Microsoft di IL Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 6 Sistemi Distribuiti, Prof. Paolo Nesi 3 Dipartimento di Sistemi e Informatica, University of Florence Codice nativo Sorgenti Compilatore Codice nativo (.EXE) Output 7 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Codice interpretato Sorgenti Interprete Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Output 8 Sistemi Distribuiti, Prof. Paolo Nesi 4 Dipartimento di Sistemi e Informatica, University of Florence Codice MSIL Sorgenti Compilatore .NET Codice MSIL (Assembly) .EXE/.DLL Compilatore JIT Codice nativo Output 9 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Codice MSIL Sorgenti Compilatore .NET Codice MSIL (Assembly) .EXE/.DLL Codice + metadati Compilatore JIT Codice nativo Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Output 10 Sistemi Distribuiti, Prof. Paolo Nesi 5 Dipartimento di Sistemi e Informatica, University of Florence Codice MSIL Ambiente di Compilatore esecuzione .NET .NET Runtime Sorgenti Codice nativo Compilatore JIT Codice MSIL (Assembly) .EXE/.DLL Output 11 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Intermediate Language (IL) VB VC ... Script IL Common Language Runtime JIT Compiler Assembly Language of CLR Code is never interpreted Native Code Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 12 Sistemi Distribuiti, Prof. Paolo Nesi 6 Dipartimento di Sistemi e Informatica, University of Florence Intermediate Language G Presenta similitudini con linguaggi ad alto livello, ma anche con il linguaggio g gg assembly: y Istruzioni per il caricamento, la memorizzazione e l’inizializzazione dei dati richiamare metodi da oggetti aritmetiche e logiche gestione eccezioni di tipo “Try/Catch” Operazioni sui registri, ma indipendente dalla piattaforma Operazioni “atomiche” Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 13 Intermediate Language G Permette al CLR controlli durante la compilazione: G Codice Type Safe Puntatori corretti Conversioni corrette ecc. Di fatto rappresenta il linguaggio a livello più basso e l’unico “eseguibile” dal CLR Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 14 Sistemi Distribuiti, Prof. Paolo Nesi 7 Dipartimento di Sistemi e Informatica, University of Florence Intermediate Language G Un compilatore conforme al CLS produce Codice IL Rappresenta il programma vero e proprio Metadati Descrivono i tipi specifici appartenenti al Common Language Types (CLT) utilizzati nel codice, comprendente la definizione di ogni tipo, le signature per ogni membro del tipo, i membri ai quali il codice fa riferimento e gli altri dati che il runtime usa durante l’esecuzione l esecuzione. Permettono componenti autodescrittivi Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 15 Intermediate Language G IL e Metadati sono alla fine contenuti in uno o più file PE (Portable Executable) nella forma tradizionale: .exe Se è codice di programma eseguibile .dll Se è un insieme di librerie Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 16 Sistemi Distribuiti, Prof. Paolo Nesi 8 Dipartimento di Sistemi e Informatica, University of Florence Common Language Runtime G Manages running code Verifies type safety Provides garbage collection, error handling Provides code access security G Common type system Value types (integer, float, user, …) Objects, Objects Interfaces Delegates, Events, Properties, Pointers G Access to native system resources Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 17 Common Language Runtime Base Class Library Support Thread Support COM Marshaler Type Checker Exception Manager Security Engine Debug Engine IL to Native Compilers Code Manager Garbage Collector Class Loader Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 18 Sistemi Distribuiti, Prof. Paolo Nesi 9 Dipartimento di Sistemi e Informatica, University of Florence Common Type System G Sistema di Tipi unificato ed interlinguaggio Un insieme standard di tipi di dato e di regole necessarie per la realizzazione di nuovi tipi G Due Categorie di Tipi disponibili: G Value Type Reference Type Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 19 Common Type System G G Value Type Reference Type Entità autodefinite contententi sia metodi che variabili Divisi in quattro sottocategorie: Self Describing Interface Pointer Built Built--in Descrivono valori che sono rappresentati come la locazione di una sequenza di bit Tipi p atomici come integer g e char Divisi in built built--in ed user defined Descrivono valori che sono rappresentati come sequenze di bit Allocati nello Stack del Thread Non soggetti al Garbage G Reference Type Collector Allocati nell’ Heap Gestito (Managed Heap) Soggetti al Garbage Collector Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 20 Sistemi Distribuiti, Prof. Paolo Nesi 10 Dipartimento di Sistemi e Informatica, University of Florence Common Language Specification G Il CLS definisce un sottoinsieme del Common Type System al quale l ttutti tti i fornitori f it i di librerie lib i di classi l i e progettisti tti ti di lilinguaggii che puntano al CLR, devono aderire. G Se un componente scritto in un linguaggio (ad esempio C#) dovrà essere utilizzato da un altro linguaggio (ad esempio VB.NET), allora chi scrive il componente dovrà aderire ai tipi e alle strutture definite dal CLS. Ad esempio, il tipo Int32 è compatibile con il CLS ed i linguaggi e gli strumenti possono aspettarsi che altri linguaggi e strumenti conformi al CLS sappiano come utilizzarlo correttamente Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 21 JIT – Just in Time Compiler G G G G G G Il codice non viene caricato tutto in memoria il compilatore JIT compila solo il codice necessario, quindi memorizza nella cache il codice nativo compilato per riutilizzarlo L’overhead è una lieve differenza che, nella maggior parte dei casi, non verrà rilevata Quando viene caricata una classe, il caricatore aggiunge uno stub a ogni metodo della classe La p prima volta che viene chiamato il metodo, il codice stub cede il controllo al compilatore JIT, che compila MSIL nel codice nativo. Lo stub viene quindi modificato per puntare al codice nativo appena creato, affinché le chiamate successive passino direttamente al codice nativo Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 22 Sistemi Distribuiti, Prof. Paolo Nesi 11 Dipartimento di Sistemi e Informatica, University of Florence Just In Time Compiler G Compilatore al volo basato sul concetto JIT: Non tutto l’IL di un PE viene eseguito durante un programma, solo la parte necessaria viene compilata un istante prima della sua esecuzione. Il codice compilato viene memorizzato per successive esecuzioni Tutto il codice .NET è compilato JIT, anche linguaggi di scripting come VB Script, J Script, JavaScript ecc. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 23 Just In Time Compiler G G G G G G Solo il codice usato verrà compilato Minore occupazione di memoria Facile rimozione del codice inutilizzato da tempo Controlli sull’IL in fase di compilazione Dati per la compilazione contenuti nello stesso file del codice (metadati) Compilazione ottimizzante perché conosce lo stato preciso dell’ambiente di esecuzione Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 24 Sistemi Distribuiti, Prof. Paolo Nesi 12 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe IL Metodo 1 IL Metodo 2 IL Metodo 3 IL PORTABLE EXECUTABLE 25 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe IL LOADER Metodo 1 IL Stub Metodo 2 IL Metodo 3 IL PORTABLE EXECUTABLE Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 26 Sistemi Distribuiti, Prof. Paolo Nesi 13 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe IL Stub Metodo 1 IL Metodo 2 IL Metodo 3 IL 27 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe IL JIT Stub Metodo 1 IL Metodo 2 IL Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 IL 28 Sistemi Distribuiti, Prof. Paolo Nesi 14 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 IL Metodo 3 IL 29 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 IL Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 IL 30 Sistemi Distribuiti, Prof. Paolo Nesi 15 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 IL Metodo 3 IL 31 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL JIT Metodo 2 IL Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 IL 32 Sistemi Distribuiti, Prof. Paolo Nesi 16 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 IL Metodo 3 IL Metodo 2 CODICE MACCHINA 33 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 3 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 34 Sistemi Distribuiti, Prof. Paolo Nesi 17 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 3 IL Metodo 2 CODICE MACCHINA 35 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 3 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 36 Sistemi Distribuiti, Prof. Paolo Nesi 18 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 3 IL Metodo 2 CODICE MACCHINA 37 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL JIT Metodo 3 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 38 Sistemi Distribuiti, Prof. Paolo Nesi 19 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 3 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Metodo 3 CODICE MACCHINA 39 Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 CODICE MACCHINA 40 Sistemi Distribuiti, Prof. Paolo Nesi 20 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Metodo 3 CODICE MACCHINA 41 Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 CODICE MACCHINA 42 Sistemi Distribuiti, Prof. Paolo Nesi 21 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 JIT Metodo 3 CODICE MACCHINA 43 Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 Metodo 3 CODICE MACCHINA 44 Sistemi Distribuiti, Prof. Paolo Nesi 22 Dipartimento di Sistemi e Informatica, University of Florence JIT Entry Point / Classe CODICE MACCHINA Stub Metodo 1 IL Metodo 2 CODICE MACCHINA Metodo 3 CODICE MACCHINA Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 45 .NET – Hierarchy, Another View CLR CLR Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 46 Sistemi Distribuiti, Prof. Paolo Nesi 23 Dipartimento di Sistemi e Informatica, University of Florence Indipendenza dalla piattaforma G .NET è un’implementazione di CLI Common Language Infrastructure G CLI è uno standard ECMA ECMA ECMA--334, ECMA ECMA--335 G Esistono già altre implementazioni di CLI: SSCLI (Microsoft, per Windows, FreeBSD e Macintosh) Mono (per Linux) DotGNU Intel OCL (Open CLI Library) … Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 47 Comparison G G Java One language Multiple utpep platforms at o s .NET Multiple languages Multiple platforms Windows FreeBSD (Rotor) Linux, GNU (in progress) Mono Project (Ximian) Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 48 Sistemi Distribuiti, Prof. Paolo Nesi 24 Dipartimento di Sistemi e Informatica, University of Florence Comparison between J2EE and .NET Architectures Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 49 J2EE and .NET Execution Engine J2EE Java source code compiles into machinemachineindependent byte code Runtime Environment : JVM .NET Any compliant language compiles into MSIL Runtime environment : CLR Both JVM and CLR ,support services, such as code verification, memory management via garbage collection, and code security Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 50 Sistemi Distribuiti, Prof. Paolo Nesi 25 Dipartimento di Sistemi e Informatica, University of Florence J2EE and .NET Cross Platform Portability J2EE Platform Independent JDK should exist on target machine .NET Supports Windows platform CLR should exist on target machine Can support other platforms provided it has its own JIT complier Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 51 J2EE and .NET Language Support J2EE Tied to Java Supports other languages via interface technology .NET Language independent Supports pp any y language g g if mapping pp g exists from that language to IL Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 52 Sistemi Distribuiti, Prof. Paolo Nesi 26 Dipartimento di Sistemi e Informatica, University of Florence The .NET Architecture HTTP HTML F I R E W A L L Presentation Tier ASP.NET F I R E W A L L .NET Remoting, MSMQ or SOAP Business Tier COM+ Visual Studio .NET .NET Enterprise Server ADO.NET .NET Building Block Services UDDI .NET Client System SQL Server or ADO compatible DB Database Tier 53 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 The J2EE Architecture HTTP HTML F I R E W A L L Presentation Tier Servlets Java Server Pages F I R E W A L L RMI / IIOP Business Tier EJB Java Language System JDBC JDBC compatible DB Database Tier Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 54 Sistemi Distribuiti, Prof. Paolo Nesi 27 Dipartimento di Sistemi e Informatica, University of Florence .NET: LanguageLanguage-Independent, Platform-- Specific Platform Person.vb Windows (Visual Basic) CLR CLR Person MSIL Deploy Address MSIL Windows CLR Company MSIL Others? Address.cs (C#) Company.cbl CLR (Cobol) Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 55 Elementi caratteristici G G Application Domain Assembly Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 56 Sistemi Distribuiti, Prof. Paolo Nesi 28 Dipartimento di Sistemi e Informatica, University of Florence Assembly Modulo (fil PE) (file Codice IL Metadati Manifest Assembly Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 57 Metadati G G G G G Concetto chiave in .NET Informazioni sui tipi di un assembly Generati automaticamente a tomaticamente dai compilatori Estendibili da terze parti Formato binario rappresentabile con XML: XML Schema (XSD) Serializzazione e deserializzazione oggetti a runtime in XML Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 58 Sistemi Distribuiti, Prof. Paolo Nesi 29 Dipartimento di Sistemi e Informatica, University of Florence Metadati G Descrizione di un assembly Identità: nome, versione, cultura [, pubblic key] Tipi esportati Assembly A bl d da cuii di dipende d G Descrizione dei tipi Nome, visibilità, classe base, interfacce implementate G Attributi custom Definiti dall’utente Definiti dal compilatore Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 59 Simplify Deployment And Management G Assemblies The unit of deployment, versioning, and security Like DLLs, but selfself-describing through manifest G G Zero-impact install ZeroSide--by Side by--side execution Multiple versions of the same component can co--exist co Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 60 Sistemi Distribuiti, Prof. Paolo Nesi 30 Dipartimento di Sistemi e Informatica, University of Florence Assembly G G G G È una collezione di funzionalità sviluppate e distribuite come una singola unità applicativa (uno o più file) file). In pratica è una raccolta di codice compilato. Completamente autodescrittivo grazie al suo manifesto. Installazione di tipo XCOPY. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 61 Assembly G Il manifesto è un metadato che: Stabilisce ll’identità identità dell dell’assembly assembly in termini di nome nome, versione versione, livello di condivisione tra applicazioni diverse, firma digitale. Definisce quali file costituiscono l’implementazione dell’assembly. Specifica le dipendenze in fase di compilazione da altri assembly. Specifica i tipi e le risorse che costituiscono l’assembly, inclusi quelli che vengono esportati dall’assembly dall assembly. Specifica l’insieme dei permessi necessari al corretto funzionamento dell’assembly. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 62 Sistemi Distribuiti, Prof. Paolo Nesi 31 Dipartimento di Sistemi e Informatica, University of Florence Assembly G G Il manifesto è parte indissolubile dell’assembly ed è compreso nello stesso file file. E’ il CLR che si preoccupa che le dipendenze espresse nel manifesto siano verificate ed eventualmente si occupa di “ripararle” Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 63 Assembly G G G Il runtime è in grado di eseguire due versioni diverse della stessa componente sideside-by by--side. side Il runtime è in grado di rendere disponibile due versioni diverse della stessa libreria Nessuna registrazione necessaria Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 64 Sistemi Distribuiti, Prof. Paolo Nesi 32 Dipartimento di Sistemi e Informatica, University of Florence Assembly G Il CLR fornisce anche API utilizzate dai motori di scripting che creano assembly dinamici durante l’esecuzione l esecuzione degli script; questi assembly sono eseguiti direttamente senza essere salvati su disco. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 65 Assembly G Global Assembly Cache Memoria per gli assembly “sicuri”. Gestione riservata agli amministratori Eseguiti fuori dalla “Sandbox”, maggiori privilegi di accesso alle risorse G Downloaded Assembly Cache Memoria per gli assembly transitori e/o “insicuri”. Assembly esterni esterni, ad esempio scaricati dalla rete rete. Eseguiti nella “Sandbox” più lenti e con minor accesso alle risorse Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 66 Sistemi Distribuiti, Prof. Paolo Nesi 33 Dipartimento di Sistemi e Informatica, University of Florence Concludendo Sistema Operativo G Applicazione pp 1 ((Processo Win32 Separato) p ) Application Domain 1 Application Domain 2 • Assembly 1 • Assembly 2 • Assembly 3 Applicazione 2 (Processo Win32 Separato) Applicazione 3 (Processo Win32 Separato) Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 67 Application Domain G Sono i processi leggeri del CLR Possono essere immaginati come una fusione della Sandbox di Java e del modello a Thread “Leggeri” perché più AD sono eseguiti in un unico processo Win32,, ma con meccanismi di sicurezza ed isolamento Win32 Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 68 Sistemi Distribuiti, Prof. Paolo Nesi 34 Dipartimento di Sistemi e Informatica, University of Florence Application Domain G Modello di sicurezza Controllo di sicurezza in fase di compilazione Ogni applicazione può avere application domain multipli associata con essa, ed ognuno di questi ha un file di configurazione contenente i permessi di sicurezza. Queste informazioni di configurazione sono utilizzate dal CLR per fornire un sistema di sicurezza tipo sandbox analogo a quello presente in Java. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 69 Application Domain G Modello di sicurezza Nonostante più application domain possano essere eseguiti in un unico processo, nessuna chiamata diretta è permessa tra metodi di oggetti presenti in differenti application domain. domain. In alternativa un meccanismo di tipo proxy è utilizzato per isolare lo spazio dei codici. Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 70 Sistemi Distribuiti, Prof. Paolo Nesi 35 Dipartimento di Sistemi e Informatica, University of Florence Garbage Collector G Gli oggetti vengono distrutti automaticamente quando non sono più referenziati G Algoritmo MarkMark-andand-Compact Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 71 GC e distruzione deterministica G In alcuni casi serve un comportamento di finalizzazione deterministica: Riferimenti a oggetti non gestiti Utilizzo di risorse che devono essere rilasciate appena termina il loro utilizzo G G Non si possono usare i finalizzatori, che non sono richiamabili direttamente Implementare l’interfaccia IDisposable Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 72 Sistemi Distribuiti, Prof. Paolo Nesi 36 Dipartimento di Sistemi e Informatica, University of Florence References G Dove posso ottenere maggiori informazioni G www.microsoft.com/msdn/italy/studenti www.ugidotnet.org www gotdotnet com www.gotdotnet.com www.ecma--international.org www.ecma Developer resources Microsoft Visual Studio.NET Microsoft .NET Framework SDK Microsoft Developer Network Sistemi Distribuiti, Univ. Firenze, Paolo Nesi 2005-2006 73 Sistemi Distribuiti, Prof. Paolo Nesi 37