Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Introduzione al .NET Framework
Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:
2
DevLeap? Che roba è? www.DevLeap.it
Un gruppo di 5 persone con tanta voglia di Studiare a fondo le tecnologie Capire il “behind the scenes” Implementare soluzioni reali Confrontarsi con le problematiche reali Sperimentare nuove idee Facciamo Corsi, Conferenze, Training Scriviamo libri
3
Chi siete ? Chi conosce Java? Chi conosce Visual Basic?
Chi conosce C++? Chi conosce COM?
4
Agenda Perché .NET Common Language Runtime
Semplificazione: sviluppo e deployment Affidabilità del codice Principali servizi del Framework Piattaforma multi-linguaggio Unificazione modello programmazione Librerie disponibili
5
Perché .NET Attuali tecniche di programmazione:
Server: C++, Java, T-SQL, … Middle-tier: VB, C++, … Web Presentation: ASP, JSP, PHP, … Web Client: Jscript, VBscript Rich-client: VB, C++, Java, … Protocolli: HTTP, XML-RPC, DCOM, CORBA, …
6
Perché .NET Difficile effettuare sviluppo omogeneo
Molto tempo viene dedicato a far comunicare i vari “strati” Serve un salto qualitativo per semplificare lo scenario Ma non c’era COM ?
7
Codice e strutture dati
Prima di COM Applicazione Codice e strutture dati Prima di COM, le applicazioni erano entità completamente separate, senza integrazione
8
L’era di COM COM fornisce un meccanismo per integrare dei componenti. Ogni componente deve però fornire dei “contatti” e gli oggetti non possono interagire direttamente
9
.NET: oltre l’era di COM Con “.NET Framework Common Language Runtime”, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente.
10
Architettura .NET Framework
VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Non fermarsi a spiegare, il significato dei vari componenti arriva durante la presentazione Base Class Library Common Language Runtime
11
Cosa è .NET È un ambiente di esecuzione (runtime environment)
Semplifica lo sviluppo e il deployment Aumenta l’affidabilità del codice È completamente indipendente da COM È fortemente integrato con COM Unifica il modello di programmazione
12
Ambiente di esecuzione
Concetti chiave: MSIL: Microsoft Intermediate Language CLR: Common Language Runtime CTS: Common Type System CLS: Common Language Specification
13
Codice MSIL Codice MSIL Compilatore .NET Sorgenti (Assembly)
.EXE/.DLL Codice nativo Output Compilatore JIT
14
Common Language Runtime
VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Evidenziare posizione CLR Base Class Library Common Language Runtime
15
Common Language Runtime
IL CLR offre vari servizi alle applicazioni Managed code (MSIL) Common Language Runtime (CLR) Funzionalità specifiche di CLR (es. Garbage Collection) Funzionalità esistenti (es. I/O su file) mediate da CLR Sistema operativo (Win32, …)
16
Common Language Runtime
Sviluppo iniziato nel ’97 Nato inizialmente come ambiente di esecuzione migliorato per COM+ Metadati distribuiti in troppe posizioni diverse Registry COM+ catalog DLL Modello nuovo per fare cose vecchie Sviluppo di una API (C, C++) Sviluppo di wrapper COM per l’API
17
Common Language Runtime
Class Loader IL to Native Compilers Code Manager Garbage Collector Security Engine Debug Engine Type Checker Exception Manager Thread Support COM Marshaler Base Class Library Support Notare che la BCL astrae molti dei servizi del sistema operativo sottostante, ed è anche presente come libreria di .NET Framework a livello superiore rispetto al CLR.
18
Sviluppo semplificato
Ambiente object-oriented Qualsiasi entità è un oggetto Classi ed ereditarietà pienamente supportati Anche tra linguaggi diversi ! Riduzione errori comuni di programmazione Linguaggi fortemente tipizzati Errori non gestiti Meno memory leak: Garbage Collector
19
Indipendenza dalla piattaforma
.NET è un’implementazione di CLI Common Language Infrastructure CLI è uno standard ECMA, definito con C# ECMA-334, ECMA-335 Esistono già altre implementazioni di CLI: SSCLI (Microsoft, per Windows, FreeBSD e Macintosh) Mono (per Linux) DotGNU Intel OCL (Open CLI Library) …
20
Deployment semplificato
Assembly Unità minima per la distribuzione, il versioning e la security Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il “Manifest” Può essere composto da uno o più file Il manifest può risiedere in un file EXE/DLL separato, oppure in un EXE/DLL che contiene codice dell’assembly Note su distribuzione assembly multi-file – si possono copiare file per file, ma è meglio fare un .MSI per l’installazione. Approfondimento:
21
Assembly a modulo singolo
Codice IL Metadati Manifest Modulo (file PE) Nota: si riprendono gli assembly più avanti, non approfondire troppo su questa slide e sulla precedente. Assembly a modulo singolo
22
Deployment semplificato
Installazione senza effetti collaterali Le applicazioni e i componenti possono sempre essere condivisi o privati Esecuzione side-by-side Diverse versioni dello stesso componente possono coesistere, anche nello stesso processo
23
Dove sono gli assembly Assembly privati Assembly condivisi
Directory applicazione (e sub-directory) Assembly condivisi Global Assembly Cache (GAC) c:\windows\assembly Assembly scaricati da URL Download cache c:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl2 GACUTIL.EXE Tool per esaminare GAC e download cache GACUTIL /l – per vedere GAC GACUTIL /ldl – per vedere download cache
24
Deployment degli assembly
XCOPY Applicazioni ASP.NET .CAB Applicazioni Windows Forms - Code Download .MSI (Windows Installer) Applicazioni Windows Forms Installazione in GAC di assembly condivisi Configurazione shortcut
25
Sicurezza e affidabilità del codice
Separazione spazi di memoria in un processo con AppDomain Controllo del codice e sicurezza dei tipi Sono impediti cast non sicuri, variabili non inizializzate, accessi ad array oltre i limiti di allocazione Garbage Collector per tutti gli oggetti .NET Gestione delle eccezioni Miglioramento della diagnostica di errore Integrata con Windows SEH
26
Application Domain Unità di elaborazione in .NET
Un processo può avere più AppDomain Si può scaricare un AppDomain, non un assembly Relazione thread – AppDomain Runtime host creano AppDomain ASP.NET, Internet Explorer, Shell, … Gestione diretta degli AppDomain
27
Assembly in AppDomain Processo AppDomain AppDomain Assembly Assembly
Shared Assembly Shared Assembly Uno shared assembly carica una sola volta in memoria il codice dell’assembly; i dati restano locali ai due AppDomain. Per scaricare un assembly bisogna scaricare un intero AppDomain.
28
Garbage Collector Gli oggetti vengono distrutti automaticamente quando non sono più referenziati A differenza di COM, non ci si basa sul Reference Counting Maggiore velocità di allocazione Consentiti i riferimenti circolari Perdita della distruzione deterministica Algoritmo Mark-and-Compact
29
Garbage Collector - fase 1: Mark
NextObjPtr Root set Oggetti “vivi” Oggetti non raggiungibili Spazio libero
30
Garbage Collector - fase 2: Compact
Spazio recuperato NextObjPtr Root set Oggetti “vivi” Spazio libero
31
GC e distruzione deterministica
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 Non si possono usare i finalizzatori, che non sono richiamabili direttamente Implementare l’interfaccia IDisposable
32
Piattaforma multi-linguaggio
Libertà di scelta del linguaggio Tutte le funzionalità di .NET Framework sono disponibili a tutti i linguaggi .NET I componenti di un’applicazione possono essere scritti con diversi linguaggi Impatto sui tool Tool disponibili per tutti i linguaggi: Debugger, Profiler, Analisi “Code coverage”, ecc.
33
CTS: Common Type System
Sistema di tipi comune Alla base di tutti i linguaggi .NET Progettato per linguaggi object-oriented, procedurali e funzionali Esaminate caratteristiche di 20 linguaggi Tutte le funzionalità disponibili con IL Ogni linguaggio utilizza alcune caratteristiche Common Language Specification (CLS) Sottoinsieme di CTS Regole di compatibilità tra linguaggi
34
Gestione degli errori Uniforme per tutte le classi
Gestione strutturata delle eccezioni Concetto implementato nel CTS Disponibile in tutti i linguaggi con sintassi diverse Concetti universali: Lanciare un’eccezione Catturare un’eccezione Codice di uscita da un blocco controllato (finally) Non ha costi elevati (codice/prestazioni)
35
Gestione strutturata delle eccezioni
b(); try { c(); d(); } catch (Exception e) { f(); g(); void c() { r(); s(); t(); } void s() { MyClass a; a = null; a.z(); a.w(); a.x(); }
36
Gestione strutturata delle eccezioni
b() Try c() d() Catch e As Exception f() End Try g() Sub c r() s() t() End Sub Sub s Dim a As MyClass a = null a.z() a.w() a.x() End Sub
37
Principali servizi del CLR
Garbage collector Gestione del ciclo di vita degli oggetti Problema della distruzione deterministica Reflection Analisi dei metadati di un assembly Generazione di un assembly dinamico Remoting Chiamata di componenti remoti (.NET) Interoperabilità (COM, Platform Invoke) Piccola intro, si approfondisce con le prossime slide
38
IL to native code compiler
Modello di esecuzione Assembly Class Loader Primo riferimento al tipo IL to native code compiler Execution Support Managed Native Code Prima chiamata al metodo Code Managers Security System CPU
39
Elaborazione sincrona e asincrona
d() e() f() g() h() Tempo Elaborazione asincrona a() f o r k c() e() g() j o i n h() Thread 1 b() d() f() Thread 2
40
Elaborazione sincrona e asincrona
Programmazione asincrona possibile da tutti i linguaggi Chiamate asincrone Thread Thread pool Componenti remoti A volte è “involontaria”... Nuovo problema: componenti thread-safe Anche per gli sviluppatori VB!! Approfondimento:
41
Common Language Specification Common Language Runtime
Librerie di classi VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Base Class Library Common Language Runtime
42
Unico modello di programmazione
.NET Framework Disponibilità di API indipendentemente dal linguaggio e dal modello di programmazione VB Forms RAD, Componenti MFC/ATL Subclassing, Potenza, Espressività ASP Stateless, Codice incapsulato in pagine HTML Windows API
43
Estendibilità delle classi
Il Framework non è una “scatola nera” Qualsiasi classe .NET può essere estesa mediante ereditarietà Diversamente da COM, si usa e si estende la classe stessa, non uno strato intermedio (wrapper) L’ereditarietà è cross-language
44
.NET Framework Web Services User Interface Data Xml Base Class Library
45
.NET Framework System.Web System.Windows.Forms System.Drawing
UI Design ComponentModel Compilation HtmlControls Handlers WebControls Hosting System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml OleDb Common Xsl Schema SqlClient SQLTypes XPath Serialization System Collections IO Security Runtime InteropServices Configuration Reflection Text Remoting Diagnostics Resources Threading Serialization Globalization
46
Base Framework System Collections Security Configuration Text
Diagnostics Threading Globalization Runtime InteropServices IO DEV303 – strutture dati in .NET (Francesco Balena) Remoting Reflection Serialization Resources
47
Data e XML System.Data Common OleDb SqlClient SqlTypes System.Xml
Schema Xsl Serialization XPath
48
Web Forms e Services System.Web UI Compilation HtmlControls Handlers
WebControls Hosting Caching Security Configuration SessionState
49
Windows Forms System.Windows.Forms Design ComponentModel
System.Drawing Drawing2D Printing Imaging Text
50
Common Language Specification Common Language Runtime
Linguaggi e Tool VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Base Class Library Common Language Runtime
51
Linguaggi La piattaforma .NET è neutrale rispetto al linguaggio (nessuno è favorito) Tutti i linguaggi .NET hanno le stesse possibilità Si possono sfruttare skill già esistenti Common Language Specification Consumer: Può usare .NET Framework Extender: Può estendere .NET Framework
52
Linguaggi Microsoft fornisce: Linguaggi di terze parti:
VB, C++, C#, JScript Linguaggi di terze parti: APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk, …
53
Common Language Specification Common Language Runtime
Visual Studio.NET VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Base Class Library Common Language Runtime
54
Visual Studio .NET Un solo tool per tutti i linguaggi
Creazione e consumo di servizi Web Modello a oggetti del codice in editor Debugger integrato …
55
Considerazioni finali
Un mondo nuovo per sviluppare Framework di classi già molto esteso Ma soprattutto coerente! Quasi tutto completamente estendibile Alta integrabilità con il codice esistente Ottima piattaforma per sviluppare componenti COM A prima vista è tutto semplice, ma è bene sapere cosa c’è dietro (tanto!!)
56
Altre Informazioni Dove posso ottenere maggiori informazioni
msdn.microsoft.com Developer resources Microsoft Visual Studio.NET Microsoft .NET Framework SDK Microsoft Developer Network
57
Introduzione al .NET Framework
I vostri feedback sono importanti Scriveteci Grazie della partecipazione A presto
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.