Introduzione al NET Framework Marco Russo MCSD MCAD

  • Slides: 56
Download presentation
Introduzione al. NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.

Introduzione al. NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap. it Italian blog: http: //blogs. devleap. com/marco. blog www. devleap. it

Dev. Leap? Che roba è? • www. Dev. Leap. it • Un gruppo di

Dev. Leap? Che roba è? • www. Dev. Leap. 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 • http: //www. devleap. it/fullcontact www. devleap. it

Chi siete ? • • Chi conosce Java? Chi conosce Visual Basic? Chi conosce

Chi siete ? • • Chi conosce Java? Chi conosce Visual Basic? Chi conosce C++? Chi conosce COM? www. devleap. it

Agenda • • Perché. NET Common Language Runtime Semplificazione: sviluppo e deployment Affidabilità del

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 www. devleap. it

Perché. NET • Attuali tecniche di programmazione: • • • Server: C++, Java, T-SQL,

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, … www. devleap. it

Perché. NET • Difficile effettuare sviluppo omogeneo • Molto tempo viene dedicato a far

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 ? www. devleap. it

Prima di COM Applicazion e Codice e strutture dati Prima di COM, le applicazioni

Prima di COM Applicazion e Codice e strutture dati Prima di COM, le applicazioni erano entità completamente separate, senza integrazione www. devleap. it

L’era di COM fornisce un meccanismo per integrare dei componenti. Ogni componente deve però

L’era di COM fornisce un meccanismo per integrare dei componenti. Ogni componente deve però fornire dei “contatti” e gli oggetti non possono interagire direttamente www. devleap. it

. NET: oltre l’era di COM Con “. NET Framework Common Language Runtime”, i

. NET: oltre l’era di COM Con “. NET Framework Common Language Runtime”, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente. www. devleap. it

Architettura. NET Framework VB C++ C# JScript … Common Language Specification User Interface Data

Architettura. NET Framework VB C++ C# JScript … Common Language Specification User Interface Data and XML Base Class Library Common Language Runtime www. devleap. it Visual Studio. NET Web Services

Cosa è. NET • È un ambiente di esecuzione (runtime environment) • Semplifica lo

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 www. devleap. it

Ambiente di esecuzione • Concetti chiave: • • MSIL: Microsoft Intermediate Language CLR: Common

Ambiente di esecuzione • Concetti chiave: • • MSIL: Microsoft Intermediate Language CLR: Common Language Runtime CTS: Common Type System CLS: Common Language Specification www. devleap. it

Codice MSIL Sorgenti Compilatore. NET Codice MSIL (Assembly). EXE/. DLL Compilatore JIT Codice nativo

Codice MSIL Sorgenti Compilatore. NET Codice MSIL (Assembly). EXE/. DLL Compilatore JIT Codice nativo www. devleap. it Output

Common Language Runtime VB C++ C# JScript … Common Language Specification User Interface Data

Common Language Runtime VB C++ C# JScript … Common Language Specification User Interface Data and XML Base Class Library Common Language Runtime www. devleap. it Visual Studio. NET Web Services

Common Language Runtime • IL CLR offre vari servizi alle applicazioni Managed code (MSIL)

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 (Win 32, …) www. devleap. it

Common Language Runtime • Sviluppo iniziato nel ’ 97 • Nato inizialmente come ambiente

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 www. devleap. it

Common Language Runtime Base Class Library Support Thread Support COM Marshaler Type Checker Exception

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 Class Loader www. devleap. it Garbage Collector

Sviluppo semplificato • Ambiente object-oriented • • • Qualsiasi entità è un oggetto Classi

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 www. devleap. it

Indipendenza dalla piattaforma • . NET è un’implementazione di CLI • Common Language Infrastructure

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, Free. BSD e Macintosh) • Mono (per Linux) • Dot. GNU • Intel OCL (Open CLI Library) • … www. devleap. it

Deployment semplificato • Assembly • Unità minima per la distribuzione, il versioning e la

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 Approfondimento: www. devleap. it

Assembly Modulo (file PE) Codice IL Metadati Manifest Assembly a modulo singolo www. devleap.

Assembly Modulo (file PE) Codice IL Metadati Manifest Assembly a modulo singolo www. devleap. it

Deployment semplificato • Installazione senza effetti collaterali • Le applicazioni e i componenti possono

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 www. devleap. it

Dove sono gli assembly • Assembly privati • Directory applicazione (e sub-directory) • Assembly

Dove sono gli assembly • Assembly privati • Directory applicazione (e sub-directory) • Assembly condivisi • Global Assembly Cache (GAC) • c: windowsassembly • Assembly scaricati da URL • Download cache c: Documents and Settings%USERNAME%Local SettingsApplication Dataassemblydl 2 GACUTIL. EXE • Tool per esaminare GAC e download cache www. devleap. it

Deployment degli assembly • XCOPY • Applicazioni ASP. NET • . CAB • Applicazioni

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 www. devleap. it

Sicurezza e affidabilità del codice • Separazione spazi di memoria in un processo con

Sicurezza e affidabilità del codice • Separazione spazi di memoria in un processo con App. Domain • 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 www. devleap. it

Application Domain • Unità di elaborazione in. NET • Un processo può avere più

Application Domain • Unità di elaborazione in. NET • Un processo può avere più App. Domain • Si può scaricare un App. Domain, non un assembly • Relazione thread – App. Domain • Runtime host creano App. Domain • ASP. NET, Internet Explorer, Shell, … • Gestione diretta degli App. Domain www. devleap. it

Assembly in App. Domain Processo App. Domain Assembly Shared Assembly www. devleap. it

Assembly in App. Domain Processo App. Domain Assembly Shared Assembly www. devleap. it

Garbage Collector • Gli oggetti vengono distrutti automaticamente quando non sono più referenziati •

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 www. devleap. it

Garbage Collector - fase 1: Mark Next. Obj. Ptr Root set Oggetti “vivi” Oggetti

Garbage Collector - fase 1: Mark Next. Obj. Ptr Root set Oggetti “vivi” Oggetti non raggiungibili Spazio libero www. devleap. it

Garbage Collector - fase 2: Compact Spazio recuperato Next. Obj. Ptr Root set Oggetti

Garbage Collector - fase 2: Compact Spazio recuperato Next. Obj. Ptr Root set Oggetti “vivi” Spazio libero www. devleap. it

GC e distruzione deterministica • In alcuni casi serve un comportamento di finalizzazione deterministica:

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 www. devleap. it

Piattaforma multi-linguaggio • Libertà di scelta del linguaggio • Tutte le funzionalità di. NET

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. www. devleap. it

CTS: Common Type System • Sistema di tipi comune • Alla base di tutti

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 www. devleap. it

Gestione degli errori • Uniforme per tutte le classi • Gestione strutturata delle eccezioni

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) www. devleap. it

Gestione strutturata delle eccezioni a() b() Try c() d() Sub c r() s() t()

Gestione strutturata delle eccezioni a() b() Try c() d() Sub c r() s() t() End Sub Catch e As Exception f() End Try g() www. devleap. it Sub s Dim a As My. Class a = null a. z() a. w() a. x() End Sub

Principali servizi del CLR • Garbage collector • Gestione del ciclo di vita degli

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) www. devleap. it

Modello di esecuzione Assembly Execution Support Code Managers Security System Class Loader IL to

Modello di esecuzione Assembly Execution Support Code Managers Security System Class Loader IL to native code compiler Managed Native Code CPU www. devleap. it Primo riferimento al tipo Prima chiamata al metodo

Elaborazione sincrona e asincrona Elaborazione sincrona a() b() c() d() e() f() g() h()

Elaborazione sincrona e asincrona Elaborazione sincrona a() b() c() d() e() f() g() h() Tempo Elaborazione asincrona a() f o r k c() e() g() b() d() f() www. devleap. it j o i n h() Thread 1 Thread 2

Elaborazione sincrona e asincrona • Programmazione asincrona possibile da tutti i linguaggi • •

Elaborazione sincrona e asincrona • Programmazione asincrona possibile da tutti i linguaggi • • Chiamate asincrone Thread pool Componenti remoti A volte è “involontaria”. . . Approfondimento: www. devleap. it Nuovo problema: componenti thread-safe Anche per gli sviluppatori VB!! www. devleap. it

Librerie di classi VB C++ C# JScript … Common Language Specification User Interface Data

Librerie di classi VB C++ C# JScript … Common Language Specification User Interface Data and XML Base Class Library Common Language Runtime www. devleap. it Visual Studio. NET Web Services

Unico modello di programmazione Disponibilità di API indipendentemente dal linguaggio e dal modello di

Unico modello di programmazione Disponibilità di API indipendentemente dal linguaggio e dal modello di programmazione . NET Framework RAD, Componenti VB Forms Subclassing, Potenza, Espressività MFC/ATL Windows API www. devleap. it Stateless, Codice incapsulato in pagine HTML ASP

Estendibilità delle classi • Il Framework non è una “scatola nera” • Qualsiasi classe.

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 www. devleap. it

. NET Framework Web Services User Interface Data Xml Base Class Library www. devleap.

. NET Framework Web Services User Interface Data Xml Base Class Library www. devleap. it

. NET Framework System. Web Compilation System. Windows. Forms UI Html. Controls Design Component.

. NET Framework System. Web Compilation System. Windows. Forms UI Html. Controls Design Component. Model Web. Controls Handlers System. Drawing Hosting Caching Security Drawing 2 D Printing Configuration Session. State Imaging Text System. Data System. Xml Ole. Db Common Xsl Schema Sql. Client SQLTypes XPath Serialization System Collections IO Security Configuration Reflection Text Diagnostics Resources Threading Runtime Interop. Services Remoting Serialization Globalization www. devleap. it

Base Framework System Collections Security Configuration Text Diagnostics Threading Globalization Runtime Interop. Services IO

Base Framework System Collections Security Configuration Text Diagnostics Threading Globalization Runtime Interop. Services IO Reflection Remoting Resources Serialization www. devleap. it

Data e XML System. Data Common Ole. Db Sql. Client Sql. Types System. Xml

Data e XML System. Data Common Ole. Db Sql. Client Sql. Types System. Xml Schema Xsl Serialization XPath www. devleap. it

Web Forms e Services System. Web Compilation Handlers UI Html. Controls Web. Controls Hosting

Web Forms e Services System. Web Compilation Handlers UI Html. Controls Web. Controls Hosting Caching Security Configuration Session. State www. devleap. it

Windows Forms System. Windows. Forms Design Component. Model System. Drawing 2 D Printing Imaging

Windows Forms System. Windows. Forms Design Component. Model System. Drawing 2 D Printing Imaging Text www. devleap. it

Linguaggi e Tool VB C++ C# JScript … Common Language Specification User Interface Data

Linguaggi e Tool VB C++ C# JScript … Common Language Specification User Interface Data and XML Base Class Library Common Language Runtime www. devleap. it Visual Studio. NET Web Services

Linguaggi • La piattaforma. NET è neutrale rispetto al linguaggio (nessuno è favorito) •

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 www. devleap. it

Linguaggi • Microsoft fornisce: • VB, C++, C#, JScript • Linguaggi di terze parti:

Linguaggi • Microsoft fornisce: • VB, C++, C#, JScript • Linguaggi di terze parti: • APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk, … www. devleap. it

Visual Studio. NET VB C++ C# JScript … Common Language Specification User Interface Data

Visual Studio. NET VB C++ C# JScript … Common Language Specification User Interface Data and XML Base Class Library Common Language Runtime www. devleap. it Visual Studio. NET Web Services

Visual Studio. NET • • • Un solo tool per tutti i linguaggi Creazione

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 … www. devleap. it

Considerazioni finali • Un mondo nuovo per sviluppare • Framework di classi già molto

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!!) www. devleap. it

Altre Informazioni • Dove posso ottenere maggiori informazioni • • www. devleap. it www.

Altre Informazioni • Dove posso ottenere maggiori informazioni • • www. devleap. it www. microsoft. com/msdn/italy msdn. microsoft. com www. gotdotnet. com • Developer resources • • • Microsoft Visual Studio. NET Microsoft. NET Framework SDK Microsoft Developer Network www. devleap. it

Introduzione al. NET Framework I vostri feedback sono importanti • Scriveteci Grazie della partecipazione

Introduzione al. NET Framework I vostri feedback sono importanti • Scriveteci Grazie della partecipazione – A presto – info@Dev. Leap. it www. devleap. it