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