La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:

Presentazioni simili


Presentazione sul tema: "Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:"— Transcript della presentazione:

1 Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:

2 DevLeap? Che roba è? Un gruppo di 5 persone con tanta voglia diUn gruppo di 5 persone con tanta voglia di Studiare a fondo le tecnologieStudiare a fondo le tecnologie Capire il behind the scenesCapire il behind the scenes Implementare soluzioni realiImplementare soluzioni reali Confrontarsi con le problematiche realiConfrontarsi con le problematiche reali Sperimentare nuove ideeSperimentare nuove idee Facciamo Corsi, Conferenze, TrainingFacciamo Corsi, Conferenze, Training Scriviamo libriScriviamo libri

3 Chi siete ? Chi conosce Java?Chi conosce Java? Chi conosce Visual Basic?Chi conosce Visual Basic? Chi conosce C++?Chi conosce C++? Chi conosce COM?Chi conosce COM?

4 Agenda Perché.NETPerché.NET Common Language RuntimeCommon Language Runtime Semplificazione: sviluppo e deploymentSemplificazione: sviluppo e deployment Affidabilità del codiceAffidabilità del codice Principali servizi del FrameworkPrincipali servizi del Framework Piattaforma multi-linguaggioPiattaforma multi-linguaggio Unificazione modello programmazioneUnificazione modello programmazione Librerie disponibiliLibrerie disponibili

5 Perché.NET Attuali tecniche di programmazione:Attuali tecniche di programmazione: Server: C++, Java, T-SQL, …Server: C++, Java, T-SQL, … Middle-tier: VB, C++, …Middle-tier: VB, C++, … Web Presentation: ASP, JSP, PHP, …Web Presentation: ASP, JSP, PHP, … Web Client: Jscript, VBscriptWeb Client: Jscript, VBscript Rich-client: VB, C++, Java, …Rich-client: VB, C++, Java, … Protocolli: HTTP, XML-RPC, DCOM, CORBA, …Protocolli: HTTP, XML-RPC, DCOM, CORBA, …

6 Perché.NET Difficile effettuare sviluppo omogeneoDifficile effettuare sviluppo omogeneo Molto tempo viene dedicato a far comunicare i vari stratiMolto tempo viene dedicato a far comunicare i vari strati Serve un salto qualitativo per semplificare lo scenarioServe un salto qualitativo per semplificare lo scenario Ma non cera COM ?Ma non cera COM ?

7 Prima di COM Prima di COM, le applicazioni erano entità completamente separate, senza integrazione Applicazion e Codice e strutture dati

8 Lera 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 oltre lera di COM Con.NET Framework Common Language Runtime, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente.

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

11 Cosa è.NET È un ambiente di esecuzione (runtime environment)È un ambiente di esecuzione (runtime environment) Semplifica lo sviluppo e il deploymentSemplifica lo sviluppo e il deployment Aumenta laffidabilità del codiceAumenta laffidabilità del codice È completamente indipendente da COMÈ completamente indipendente da COM È fortemente integrato con COMÈ fortemente integrato con COM Unifica il modello di programmazioneUnifica il modello di programmazione

12 Ambiente di esecuzione Concetti chiave:Concetti chiave: MSIL: Microsoft Intermediate LanguageMSIL: Microsoft Intermediate Language CLR: Common Language RuntimeCLR: Common Language Runtime CTS: Common Type SystemCTS: Common Type System CLS: Common Language SpecificationCLS: Common Language Specification

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

14 Common Language Runtime Base Class Library Common Language Specification Common Language Runtime Data and XML VBC++C# Visual Studio.NET JScript… Web Services User Interface

15 Common Language Runtime IL CLR offre vari servizi alle applicazioniIL CLR offre vari servizi alle applicazioni Managed code (MSIL) Sistema operativo (Win32, …) Common Language Runtime (CLR) Funzionalità esistenti (es. I/O su file) mediate da CLR Funzionalità specifiche di CLR (es. Garbage Collection)

16 Common Language Runtime Sviluppo iniziato nel 97Sviluppo iniziato nel 97 Nato inizialmente come ambiente di esecuzione migliorato per COM+Nato inizialmente come ambiente di esecuzione migliorato per COM+ Metadati distribuiti in troppe posizioni diverseMetadati distribuiti in troppe posizioni diverse RegistryRegistry COM+ catalogCOM+ catalog DLLDLL Modello nuovo per fare cose vecchieModello nuovo per fare cose vecchie Sviluppo di una API (C, C++)Sviluppo di una API (C, C++) Sviluppo di wrapper COM per lAPISviluppo di wrapper COM per lAPI

17 Common Language Runtime Class Loader IL to Native Compilers Code Manager Garbage Collector Security EngineDebug Engine Type CheckerException Manager Thread SupportCOM Marshaler Base Class Library Support

18 Sviluppo semplificato Ambiente object-orientedAmbiente object-oriented Qualsiasi entità è un oggettoQualsiasi entità è un oggetto Classi ed ereditarietà pienamente supportatiClassi ed ereditarietà pienamente supportati Anche tra linguaggi diversi !Anche tra linguaggi diversi ! Riduzione errori comuni di programmazioneRiduzione errori comuni di programmazione Linguaggi fortemente tipizzatiLinguaggi fortemente tipizzati Errori non gestitiErrori non gestiti Meno memory leak: Garbage CollectorMeno memory leak: Garbage Collector

19 Indipendenza dalla piattaforma.NET è unimplementazione di CLI.NET è unimplementazione di CLI Common Language InfrastructureCommon Language Infrastructure CLI è uno standard ECMA, definito con C#CLI è uno standard ECMA, definito con C# ECMA-334, ECMA-335ECMA-334, ECMA-335 Esistono già altre implementazioni di CLI:Esistono già altre implementazioni di CLI: SSCLI (Microsoft, per Windows, FreeBSD e Macintosh)SSCLI (Microsoft, per Windows, FreeBSD e Macintosh) Mono (per Linux)Mono (per Linux) DotGNUDotGNU Intel OCL (Open CLI Library)Intel OCL (Open CLI Library) …

20 Deployment semplificato AssemblyAssembly Unità minima per la distribuzione, il versioning e la securityUnità minima per la distribuzione, il versioning e la security Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il ManifestSimile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il Manifest Può essere composto da uno o più filePuò 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 dellassemblyIl manifest può risiedere in un file EXE/DLL separato, oppure in un EXE/DLL che contiene codice dellassembly Approfondimento:

21 Assembly Assembly a modulo singolo Codice IL Metadati Manifest Modulo (file PE)

22 Deployment semplificato Installazione senza effetti collateraliInstallazione senza effetti collaterali Le applicazioni e i componenti possono sempre essere condivisi o privatiLe applicazioni e i componenti possono sempre essere condivisi o privati Esecuzione side-by-sideEsecuzione side-by-side Diverse versioni dello stesso componente possono coesistere, anche nello stesso processoDiverse versioni dello stesso componente possono coesistere, anche nello stesso processo

23 Dove sono gli assembly Assembly privatiAssembly privati Directory applicazione (e sub-directory)Directory applicazione (e sub-directory) Assembly condivisiAssembly condivisi Global Assembly Cache (GAC)Global Assembly Cache (GAC) c:\windows\assemblyc:\windows\assembly Assembly scaricati da URLAssembly scaricati da URL Download cacheDownload cache c:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl2 GACUTIL.EXE Tool per esaminare GAC e download cacheTool per esaminare GAC e download cache

24 Deployment degli assembly XCOPYXCOPY Applicazioni ASP.NETApplicazioni ASP.NET.CAB.CAB Applicazioni Windows Forms - Code DownloadApplicazioni Windows Forms - Code Download.MSI (Windows Installer).MSI (Windows Installer) Applicazioni Windows FormsApplicazioni Windows Forms Installazione in GAC di assembly condivisiInstallazione in GAC di assembly condivisi Configurazione shortcutConfigurazione shortcut

25 Sicurezza e affidabilità del codice Separazione spazi di memoria in un processo con AppDomainSeparazione spazi di memoria in un processo con AppDomain Controllo del codice e sicurezza dei tipiControllo del codice e sicurezza dei tipi Sono impediti cast non sicuri, variabili non inizializzate, accessi ad array oltre i limiti di allocazioneSono impediti cast non sicuri, variabili non inizializzate, accessi ad array oltre i limiti di allocazione Garbage Collector per tutti gli oggetti.NETGarbage Collector per tutti gli oggetti.NET Gestione delle eccezioniGestione delle eccezioni Miglioramento della diagnostica di erroreMiglioramento della diagnostica di errore Integrata con Windows SEHIntegrata con Windows SEH

26 Application Domain Unità di elaborazione in.NETUnità di elaborazione in.NET Un processo può avere più AppDomainUn processo può avere più AppDomain Si può scaricare un AppDomain, non un assemblySi può scaricare un AppDomain, non un assembly Relazione thread – AppDomainRelazione thread – AppDomain Runtime host creano AppDomainRuntime host creano AppDomain ASP.NET, Internet Explorer, Shell, …ASP.NET, Internet Explorer, Shell, … Gestione diretta degli AppDomainGestione diretta degli AppDomain

27 Assembly in AppDomain Processo AppDomain Assembly Shared Assembly

28 Garbage Collector Gli oggetti vengono distrutti automaticamente quando non sono più referenziatiGli oggetti vengono distrutti automaticamente quando non sono più referenziati A differenza di COM, non ci si basa sul Reference CountingA differenza di COM, non ci si basa sul Reference Counting Maggiore velocità di allocazioneMaggiore velocità di allocazione Consentiti i riferimenti circolariConsentiti i riferimenti circolari Perdita della distruzione deterministicaPerdita della distruzione deterministica Algoritmo Mark-and-CompactAlgoritmo Mark-and-Compact

29 Garbage Collector - fase 1: Mark NextObjPtr Oggetti vivi Oggetti non raggiungibili Spazio libero Root set

30 Garbage Collector - fase 2: Compact NextObjPtr Oggetti vivi Spazio libero Root set Spazio recuperato

31 GC e distruzione deterministica In alcuni casi serve un comportamento di finalizzazione deterministica:In alcuni casi serve un comportamento di finalizzazione deterministica: Riferimenti a oggetti non gestitiRiferimenti a oggetti non gestiti Utilizzo di risorse che devono essere rilasciate appena termina il loro utilizzoUtilizzo di risorse che devono essere rilasciate appena termina il loro utilizzo Non si possono usare i finalizzatori, che non sono richiamabili direttamenteNon si possono usare i finalizzatori, che non sono richiamabili direttamente Implementare linterfaccia IDisposableImplementare linterfaccia IDisposable

32 Piattaforma multi-linguaggio Libertà di scelta del linguaggioLibertà di scelta del linguaggio Tutte le funzionalità di.NET Framework sono disponibili a tutti i linguaggi.NETTutte le funzionalità di.NET Framework sono disponibili a tutti i linguaggi.NET I componenti di unapplicazione possono essere scritti con diversi linguaggiI componenti di unapplicazione possono essere scritti con diversi linguaggi Impatto sui toolImpatto sui tool Tool disponibili per tutti i linguaggi: Debugger, Profiler, Analisi Code coverage, ecc.Tool disponibili per tutti i linguaggi: Debugger, Profiler, Analisi Code coverage, ecc.

33 CTS: Common Type System Sistema di tipi comuneSistema di tipi comune Alla base di tutti i linguaggi.NETAlla base di tutti i linguaggi.NET Progettato per linguaggi object-oriented, procedurali e funzionaliProgettato per linguaggi object-oriented, procedurali e funzionali Esaminate caratteristiche di 20 linguaggiEsaminate caratteristiche di 20 linguaggi Tutte le funzionalità disponibili con ILTutte le funzionalità disponibili con IL Ogni linguaggio utilizza alcune caratteristicheOgni linguaggio utilizza alcune caratteristiche Common Language Specification (CLS)Common Language Specification (CLS) Sottoinsieme di CTSSottoinsieme di CTS Regole di compatibilità tra linguaggiRegole di compatibilità tra linguaggi

34 Gestione degli errori Uniforme per tutte le classiUniforme per tutte le classi Gestione strutturata delle eccezioniGestione strutturata delle eccezioni Concetto implementato nel CTSConcetto implementato nel CTS Disponibile in tutti i linguaggi con sintassi diverseDisponibile in tutti i linguaggi con sintassi diverse Concetti universali:Concetti universali: Lanciare uneccezioneLanciare uneccezione Catturare uneccezioneCatturare uneccezione Codice di uscita da un blocco controllato (finally)Codice di uscita da un blocco controllato (finally) Non ha costi elevati (codice/prestazioni)Non ha costi elevati (codice/prestazioni)

35 Gestione strutturata delle eccezioni a();b(); try { c(); c(); d(); d();} catch (Exception e) { f(); f();}g(); void c() { r(); r(); s(); s(); t(); t();} void s() { MyClass a; MyClass a; a = null; a = null; a.z(); a.z(); a.w(); a.w(); a.x(); a.x();}

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

37 Principali servizi del CLR Garbage collectorGarbage collector Gestione del ciclo di vita degli oggettiGestione del ciclo di vita degli oggetti Problema della distruzione deterministicaProblema della distruzione deterministica ReflectionReflection Analisi dei metadati di un assemblyAnalisi dei metadati di un assembly Generazione di un assembly dinamicoGenerazione di un assembly dinamico RemotingRemoting Chiamata di componenti remoti (.NET)Chiamata di componenti remoti (.NET) Interoperabilità (COM, Platform Invoke)Interoperabilità (COM, Platform Invoke)

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

39 Elaborazione sincrona e asincrona a()b()c()d()e()f()g()h() a() b() c() d() e() f() g()h() forkforkforkfork joinjoinjoinjoin Tempo Elaborazione sincrona Elaborazione asincrona Thread 1 Thread 2

40 Elaborazione sincrona e asincrona Programmazione asincrona possibile da tutti i linguaggiProgrammazione asincrona possibile da tutti i linguaggi Chiamate asincroneChiamate asincrone ThreadThread Thread poolThread pool Componenti remotiComponenti remoti A volte è involontaria...A volte è involontaria... Nuovo problema: componenti thread-safeNuovo problema: componenti thread-safe Anche per gli sviluppatori VB!!Anche per gli sviluppatori VB!! Approfondimento:

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

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

43 Estendibilità delle classi Il Framework non è una scatola neraIl Framework non è una scatola nera Qualsiasi classe.NET può essere estesa mediante ereditarietàQualsiasi classe.NET può essere estesa mediante ereditarietà Diversamente da COM, si usa e si estende la classe stessa, non uno strato intermedio (wrapper)Diversamente da COM, si usa e si estende la classe stessa, non uno strato intermedio (wrapper) Lereditarietà è cross-languageLereditarietà è cross-language

44 Base Class Library DataXml Web Services User Interface.NET Framework

45 System System.DataSystem.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection IO Threading Text Security SqlClient OleDb SQLTypes Common Runtime InteropServices Remoting Serialization ConfigurationSessionState CachingSecurity UI HtmlControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms DesignComponentModel.NET Framework XPath Xsl Serialization Schema Hosting Handlers Compilation

46 Base Framework System Threading Text Security Resources Reflection IO Globalization Diagnostics Configuration Collections Runtime Serialization Remoting InteropServices

47 Data e XML System.Data System.Xml SqlTypes OleDb SqlClient Common Serialization Schema XPath Xsl

48 Web Forms e Services System.Web Caching Configuration UI SessionState HtmlControls WebControls Security Handlers Hosting Compilation

49 Windows Forms System.Drawing Drawing2D Imaging Printing Text System.Windows.Forms DesignComponentModel

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

51 Linguaggi La piattaforma.NET è neutrale rispetto al linguaggio (nessuno è favorito)La piattaforma.NET è neutrale rispetto al linguaggio (nessuno è favorito) Tutti i linguaggi.NET hanno le stesse possibilitàTutti i linguaggi.NET hanno le stesse possibilità Si possono sfruttare skill già esistentiSi possono sfruttare skill già esistenti Common Language SpecificationCommon Language Specification Consumer: Può usare.NET FrameworkConsumer: Può usare.NET Framework Extender: Può estendere.NET FrameworkExtender: Può estendere.NET Framework

52 Linguaggi Microsoft fornisce:Microsoft fornisce: VB, C++, C#, JScriptVB, C++, C#, JScript Linguaggi di terze parti:Linguaggi di terze parti: APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk, …APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl, Python, Scheme, Smalltalk, …

53 Visual Studio.NET Base Class Library Common Language Specification Common Language Runtime Data and XML VBC++C# Visual Studio.NET JScript… Web Services User Interface

54 Visual Studio.NET Un solo tool per tutti i linguaggiUn solo tool per tutti i linguaggi Creazione e consumo di servizi WebCreazione e consumo di servizi Web Modello a oggetti del codice in editorModello a oggetti del codice in editor Debugger integratoDebugger integrato …

55 Considerazioni finali Un mondo nuovo per sviluppareUn mondo nuovo per sviluppare Framework di classi già molto estesoFramework di classi già molto esteso Ma soprattutto coerente!Ma soprattutto coerente! Quasi tutto completamente estendibileQuasi tutto completamente estendibile Alta integrabilità con il codice esistenteAlta integrabilità con il codice esistente Ottima piattaforma per sviluppare componenti COMOttima piattaforma per sviluppare componenti COM A prima vista è tutto semplice, ma è bene sapere cosa cè dietro (tanto!!)A prima vista è tutto semplice, ma è bene sapere cosa cè dietro (tanto!!)

56 Altre Informazioni Dove posso ottenere maggiori informazioniDove posso ottenere maggiori informazioni msdn.microsoft.commsdn.microsoft.com Developer resourcesDeveloper resources Microsoft Visual Studio.NETMicrosoft Visual Studio.NET Microsoft.NET Framework SDKMicrosoft.NET Framework SDK Microsoft Developer NetworkMicrosoft Developer Network

57 Introduzione al.NET Framework I vostri feedback sono importanti ScriveteciScriveteci Grazie della partecipazione –A presto


Scaricare ppt "Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:"

Presentazioni simili


Annunci Google