www.devleap.it introduzione al.net framework marco russo mcsd mcad mcse+i mcsa mcdba mct mail:...
TRANSCRIPT
![Page 1: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/1.jpg)
www.devleap.itwww.devleap.it
Introduzione al .NET Introduzione al .NET FrameworkFramework
Marco RussoMarco RussoMCSD MCAD MCSE+I MCSA MCDBA MCTMCSD MCAD MCSE+I MCSA MCDBA MCT
Mail: [email protected]: [email protected] blog: http://blogs.devleap.com/marco.blogItalian blog: http://blogs.devleap.com/marco.blog
![Page 2: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/2.jpg)
www.devleap.it
DevLeap? Che roba è?DevLeap? Che roba è?• www.DevLeap.itwww.DevLeap.it• Un gruppo di 5 persone con tanta voglia Un gruppo di 5 persone con tanta voglia
didi• Studiare a fondo le tecnologieStudiare a fondo le tecnologie• Capire il “behind the scenes”Capire 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
• http://www.devleap.it/fullcontacthttp://www.devleap.it/fullcontact
![Page 3: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/3.jpg)
www.devleap.it
Chi siete ?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?
![Page 4: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/4.jpg)
www.devleap.it
AgendaAgenda• 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
![Page 5: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/5.jpg)
www.devleap.it
Perché .NETPerché .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, …
![Page 6: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/6.jpg)
www.devleap.it
Perché .NETPerché .NET• Difficile effettuare sviluppo omogeneoDifficile effettuare sviluppo omogeneo• Molto tempo viene dedicato a far Molto tempo viene dedicato a far
comunicare i vari “strati”comunicare i vari “strati”• Serve un salto qualitativo per Serve un salto qualitativo per
semplificare lo scenariosemplificare lo scenario• Ma non c’era COM ?Ma non c’era COM ?
![Page 7: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/7.jpg)
www.devleap.it
Prima di COMPrima di COM
Prima di COM, le applicazioni erano entità completamente separate, senza integrazione
Applicazione
Codice e strutture dati
![Page 8: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/8.jpg)
www.devleap.it
L’era di COML’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
![Page 9: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/9.jpg)
www.devleap.it
.NET: oltre l’era di COM.NET: oltre l’era di COM
Con “.NET Framework Common Language Runtime”, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente.
![Page 10: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/10.jpg)
www.devleap.it
Architettura .NET FrameworkArchitettura .NET Framework
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
JScript …
WebServices
UserInterface
![Page 11: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/11.jpg)
www.devleap.it
Cosa è .NETCosa è .NET• È un ambiente di esecuzioneÈ un ambiente di esecuzione
(runtime environment)(runtime environment)• Semplifica lo sviluppo e il deploymentSemplifica lo sviluppo e il deployment• Aumenta l’affidabilità del codiceAumenta l’affidabilità 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
![Page 12: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/12.jpg)
www.devleap.it
Ambiente di esecuzioneAmbiente 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
![Page 13: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/13.jpg)
www.devleap.it
Codice MSILCodice MSIL
Codicenativo
OutputCompilatoreJIT
CodiceMSIL
(Assembly).EXE/.DLL
Compilatore.NET
Sorgenti
![Page 14: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/14.jpg)
www.devleap.it
Common Language RuntimeCommon Language Runtime
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
JScript …
WebServices
UserInterface
![Page 15: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/15.jpg)
www.devleap.it
Common Language RuntimeCommon 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/Osu file) mediate da CLR
Funzionalità specifiche di CLR(es. Garbage Collection)
![Page 16: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/16.jpg)
www.devleap.it
Common Language RuntimeCommon Language Runtime• Sviluppo iniziato nel ’97Sviluppo iniziato nel ’97• Nato inizialmente come ambiente di Nato inizialmente come ambiente di
esecuzione migliorato per COM+esecuzione migliorato per COM+• Metadati distribuiti in troppe posizioni Metadati distribuiti in troppe posizioni
diversediverse• 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 l’APISviluppo di wrapper COM per l’API
![Page 17: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/17.jpg)
www.devleap.it
Common Language RuntimeCommon Language Runtime
Class Loader
IL to NativeCompilers
CodeManager
GarbageCollector
Security Engine Debug Engine
Type Checker Exception Manager
Thread Support COM Marshaler
Base Class Library Support
![Page 18: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/18.jpg)
www.devleap.it
Sviluppo semplificatoSviluppo semplificato
• Ambiente object-orientedAmbiente object-oriented• Qualsiasi entità è un oggetto Qualsiasi entità è un oggetto • Classi ed ereditarietà pienamente supportatiClassi ed ereditarietà pienamente supportati• Anche tra linguaggi diversi !Anche tra linguaggi diversi !
• Riduzione errori comuni di Riduzione errori comuni di programmazioneprogrammazione• Linguaggi fortemente tipizzatiLinguaggi fortemente tipizzati• Errori non gestitiErrori non gestiti• Meno memory leak: Garbage CollectorMeno memory leak: Garbage Collector
![Page 19: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/19.jpg)
www.devleap.it
Indipendenza dalla piattaformaIndipendenza dalla piattaforma
• .NET è un’implementazione di CLI.NET è un’implementazione di CLI• Common Language InfrastructureCommon Language Infrastructure
• CLI è uno standard ECMA, definito con CLI è uno standard ECMA, definito con C#C#• ECMA-334, ECMA-335ECMA-334, ECMA-335
• Esistono già altre implementazioni di Esistono già altre implementazioni di CLI:CLI:• SSCLI (Microsoft, per Windows, FreeBSD e SSCLI (Microsoft, per Windows, FreeBSD e
Macintosh)Macintosh)• Mono (per Linux)Mono (per Linux)• DotGNUDotGNU• Intel OCL (Open CLI Library)Intel OCL (Open CLI Library)• ……
![Page 20: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/20.jpg)
www.devleap.it
Deployment semplificatoDeployment semplificato• AssemblAssemblyy
• Unità minima per la distribuzione, il Unità minima per la distribuzione, il versioning e la securityversioning e la security
• Simile alle DLL, ma aggiunge meta-dati sul Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il “Manifest”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 Il manifest può risiedere in un file EXE/DLL
separato, oppure in un EXE/DLL che contiene separato, oppure in un EXE/DLL che contiene codice dell’assemblycodice dell’assembly
ApprofondimentApprofondimento:o:www.devleap.www.devleap.itit
![Page 21: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/21.jpg)
www.devleap.it
AssemblyAssembly
Assembly a modulo singolo
Codice IL
Metadati
Manifest
Modulo(file PE)
![Page 22: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/22.jpg)
www.devleap.it
Deployment semplificatoDeployment semplificato• Installazione senza effetti collateraliInstallazione senza effetti collaterali
• Le applicazioni e i componenti possono Le applicazioni e i componenti possono sempre essere condivisi o privatisempre essere condivisi o privati
• Esecuzione sEsecuzione side-by-sideide-by-side• Diverse versioni dello stesso componente Diverse versioni dello stesso componente
possono coesistere, anche nello stesso possono coesistere, anche nello stesso processoprocesso
![Page 23: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/23.jpg)
www.devleap.it
Dove sono gli assemblyDove 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 cachec:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl2c:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl2
GACUTIL.EXEGACUTIL.EXE• Tool per esaminare GAC e download cacheTool per esaminare GAC e download cache
![Page 24: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/24.jpg)
www.devleap.it
Deployment degli assemblyDeployment degli assembly• XCOPYXCOPY
• Applicazioni ASP.NETApplicazioni ASP.NET
• .CAB.CAB• Applicazioni Windows Forms - Code Applicazioni Windows Forms - Code
DownloadDownload
• .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
![Page 25: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/25.jpg)
www.devleap.it
Sicurezza e affidabilità del codiceSicurezza e affidabilità del codice• Separazione spazi di memoria in un Separazione spazi di memoria in un
processo con AppDomainprocesso con AppDomain• Controllo del codice e sicurezza dei tipiControllo del codice e sicurezza dei tipi
• Sono impediti cast non sicuri, variabili non Sono impediti cast non sicuri, variabili non inizializzate, accessi ad array oltre i limiti di inizializzate, accessi ad array oltre i limiti di allocazioneallocazione
• Garbage Collector per tutti gli Garbage Collector per tutti gli oggetti oggetti .NET.NET
• Gestione delle eccezioniGestione delle eccezioni• Miglioramento della diagnostica di erroreMiglioramento della diagnostica di errore• Integrata con Integrata con Windows SEHWindows SEH
![Page 26: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/26.jpg)
www.devleap.it
Application DomainApplication 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 Si può scaricare un AppDomain, non un
assemblyassembly• 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
![Page 27: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/27.jpg)
www.devleap.it
Assembly in AppDomainAssembly in AppDomain
Processo
AppDomain AppDomain
Assembly Assembly
Shared Assembly Shared Assembly
![Page 28: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/28.jpg)
www.devleap.it
Garbage CollectorGarbage Collector• Gli oggetti vengono distrutti Gli oggetti vengono distrutti
automaticamente quando non sono più automaticamente quando non sono più referenziatireferenziati
• A differenza di COM, non ci si basa sul A differenza di COM, non ci si basa sul Reference CountingReference 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
![Page 29: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/29.jpg)
www.devleap.it
Garbage Collector - fase 1: MarkGarbage Collector - fase 1: Mark
NextObjPtrNextObjPtr
Oggetti “vivi”Oggetti “vivi”
Oggetti non raggiungibiliOggetti non raggiungibili
Spazio liberoSpazio libero
Root setRoot set
![Page 30: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/30.jpg)
www.devleap.it
Garbage Collector - fase 2: Garbage Collector - fase 2: CompactCompact
NextObjPtrNextObjPtr
Oggetti “vivi”Oggetti “vivi”
Spazio liberoSpazio libero
Root setRoot set
Spazio recuperatoSpazio recuperato
![Page 31: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/31.jpg)
www.devleap.it
GC e distruzione deterministicaGC e distruzione deterministica• In alcuni casi serve un comportamento In alcuni casi serve un comportamento
di finalizzazione deterministica:di finalizzazione deterministica:• Riferimenti a oggetti non gestitiRiferimenti a oggetti non gestiti• Utilizzo di risorse che devono essere Utilizzo di risorse che devono essere
rilasciate appena termina il loro utilizzorilasciate appena termina il loro utilizzo
• Non si possono usare i finalizzatori, che Non si possono usare i finalizzatori, che non sono richiamabili direttamentenon sono richiamabili direttamente
• Implementare l’interfaccia Implementare l’interfaccia IDisposableIDisposable
![Page 32: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/32.jpg)
www.devleap.it
Piattaforma multi-linguaggioPiattaforma multi-linguaggio• Libertà di scelta del linguaggioLibertà di scelta del linguaggio
• Tutte le funzionalità di Tutte le funzionalità di .NET .NET Framework Framework sono disponibili a tutti i linguaggi .NETsono disponibili a tutti i linguaggi .NET
• I componenti di un’applicazione possono I componenti di un’applicazione possono essere scritti con diversi linguaggiessere scritti con diversi linguaggi
• Impatto sui toolImpatto sui tool• Tool disponibili per tutti i linguaggi:Tool disponibili per tutti i linguaggi:
Debugger, Profiler, Analisi “Code coverage”, Debugger, Profiler, Analisi “Code coverage”, ecc.ecc.
![Page 33: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/33.jpg)
www.devleap.it
CTS: Common Type SystemCTS: 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-Progettato per linguaggi object-oriented, procedurali e funzionalioriented, 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 Ogni linguaggio utilizza alcune
caratteristichecaratteristiche
• Common Language Specification (CLS)Common Language Specification (CLS)• Sottoinsieme di CTSSottoinsieme di CTS• Regole di compatibilità tra linguaggiRegole di compatibilità tra linguaggi
![Page 34: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/34.jpg)
www.devleap.it
Gestione degli erroriGestione 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 Disponibile in tutti i linguaggi con sintassi
diversediverse• Concetti universali:Concetti universali:
• Lanciare un’eccezioneLanciare un’eccezione• Catturare un’eccezioneCatturare un’eccezione• Codice di uscita da un blocco controllato Codice di uscita da un blocco controllato
(finally)(finally)
• Non ha costi elevati (codice/prestazioni)Non ha costi elevati (codice/prestazioni)
![Page 35: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/35.jpg)
www.devleap.it
Gestione strutturata delle Gestione strutturata delle eccezionieccezioni
a()a()
b()b()
TryTry
c()c()
d()d()
Catch e As ExceptionCatch e As Exception
f()f()
End TryEnd Try
g()g()
Sub cSub c
r()r()
s()s()
t()t()
End SubEnd Sub
Sub sSub s
Dim a As MyClassDim a As MyClass
a = nulla = null
a.z()a.z()
a.w()a.w()
a.x()a.x()
End SubEnd Sub
![Page 36: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/36.jpg)
www.devleap.it
Principali servizi del CLRPrincipali servizi del CLR• Garbage collector Garbage 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à Interoperabilità (COM, Platform Invoke)(COM, Platform Invoke)
![Page 37: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/37.jpg)
www.devleap.it
Modello di esecuzioneModello di esecuzione
ClassClassLoaderLoader
IL to nativeIL to nativecode compilercode compiler
CPUCPUSecuritySecuritySystemSystem
CodeCodeManagersManagers
ManagedManagedNativeNativeCodeCode
AssemblyAssembly
Prima Prima chiamatachiamataal metodoal metodo
Primo Primo riferimento riferimento al tipoal tipo
ExecutionExecutionSupportSupport
![Page 38: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/38.jpg)
www.devleap.it
Elaborazione sincrona e asincronaElaborazione sincrona e asincrona
a()a() b()b() c()c() d()d() e()e() f()f() g()g() h()h()
a()a()
b()b()
c()c()
d()d()
e()e()
f()f()
g()g() h()h()ffoorrkk
jjooiinn
TempoTempo
ElaborazioElaborazionene
sincronasincrona
ElaborazioneElaborazioneasincronaasincrona Thread 1Thread 1
Thread 2Thread 2
![Page 39: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/39.jpg)
www.devleap.it
Elaborazione sincrona e asincronaElaborazione sincrona e asincrona• Programmazione asincrona possibile da Programmazione asincrona possibile da
tutti i linguaggitutti i linguaggi• Chiamate asincroneChiamate asincrone• ThreadThread• Thread poolThread pool• Componenti remotiComponenti remoti• A volte è “involontaria”...A volte è “involontaria”...
• Nuovo problema: componenti thread-Nuovo problema: componenti thread-safesafe
• Anche per gli sviluppatori VB!!Anche per gli sviluppatori VB!!
ApprofondimentApprofondimento:o:www.devleap.www.devleap.itit
![Page 40: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/40.jpg)
www.devleap.it
Librerie di classiLibrerie di classi
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
JScript …
WebServices
UserInterface
![Page 41: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/41.jpg)
www.devleap.it
Unico modello di programmazioneUnico modello di programmazione
Windows API
.NET Framework
Disponibilità di API indipendentementedal linguaggio e dal modello di programmazione
ASP
Stateless,Codice incapsulato
in pagine HTML
MFC/ATL
Subclassing,Potenza,
Espressività
VB Forms
RAD,Componenti
![Page 42: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/42.jpg)
www.devleap.it
Estendibilità delle classiEstendibilità delle classi• Il Framework non è una “scatola nera”Il Framework non è una “scatola nera”• Qualsiasi classe Qualsiasi classe .NET .NET può essere estesa può essere estesa
mediante ereditarietàmediante ereditarietà• Diversamente da Diversamente da COM, COM, si usa e si estende la si usa e si estende la
classe stessa, non uno strato intermedio classe stessa, non uno strato intermedio (wrapper)(wrapper)
• L’ereditarietà è L’ereditarietà è cross-languagecross-language
![Page 43: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/43.jpg)
www.devleap.it
Base Class Library
Data Xml
Web Services User Interface
.NET Framework.NET Framework
![Page 44: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/44.jpg)
www.devleap.it
System
System.Data System.Xml
System.Web
Globalization
Diagnostics
Configuration
Collections
Resources
Reflection
IO
Threading
Text
Security
SqlClient
OleDb
SQLTypes
Common
RuntimeInteropServices
Remoting
Serialization
Configuration SessionState
Caching Security
UIHtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.Windows.Forms
Design ComponentModel
.NET Framework.NET Framework
XPath
Xsl
Serialization
Schema
Hosting
Handlers
Compilation
![Page 45: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/45.jpg)
www.devleap.it
Base FrameworkBase Framework
System
Threading
Text
Security
Resources
Reflection
IO
Globalization
Diagnostics
Configuration
Collections
Runtime
Serialization
Remoting
InteropServices
![Page 46: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/46.jpg)
www.devleap.it
Data Data ee XML XML
System.Data
System.Xml
SqlTypes
OleDb
SqlClient
Common
Serialization
Schema
XPath
Xsl
![Page 47: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/47.jpg)
www.devleap.it
Web Forms Web Forms ee Services Services
System.Web
Caching
Configuration
UI
SessionState
HtmlControls
WebControls
Security
Handlers
Hosting
Compilation
![Page 48: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/48.jpg)
www.devleap.it
Windows FormsWindows Forms
System.Drawing
Drawing2D
Imaging
Printing
Text
System.Windows.Forms
Design ComponentModel
![Page 49: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/49.jpg)
www.devleap.it
Linguaggi e ToolLinguaggi e Tool
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
JScript …
WebServices
UserInterface
![Page 50: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/50.jpg)
www.devleap.it
LinguaggiLinguaggi• La piattaforma La piattaforma .NET .NET è neutrale rispetto è neutrale rispetto
al linguaggio (nessuno è favorito)al linguaggio (nessuno è favorito)• Tutti i linguaggi Tutti i linguaggi .NET .NET hanno le stesse hanno le stesse
possibilitàpossibilità• Si possono sfruttare skill già esistentiSi possono sfruttare skill già esistenti
• Common Language SpecificationCommon Language Specification• Consumer: Consumer: Può usarePuò usare .NET Framework .NET Framework• Extender: Extender: Può estenderePuò estendere .NET Framework .NET Framework
![Page 51: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/51.jpg)
www.devleap.it
LinguaggiLinguaggi• 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, APL, COBOL, Pascal, Eiffel, Haskell, ML,
Oberon, Perl, Python, Scheme, Smalltalk, …Oberon, Perl, Python, Scheme, Smalltalk, …
![Page 52: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/52.jpg)
www.devleap.it
Visual Studio.NETVisual Studio.NET
Base Class Library
Common Language Specification
Common Language Runtime
Data and XML
VB C++ C#V
isual S
tud
io.N
ET
JScript …
WebServices
UserInterface
![Page 53: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/53.jpg)
www.devleap.it
Visual Studio .NETVisual 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• ……
![Page 54: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/54.jpg)
www.devleap.it
Considerazioni finaliConsiderazioni 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 perOttima piattaforma per
sviluppare componenti COMsviluppare componenti COM• A prima vista è tutto semplice, ma è A prima vista è tutto semplice, ma è
bene sapere cosa c’è dietro (tanto!!)bene sapere cosa c’è dietro (tanto!!)
![Page 55: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/55.jpg)
www.devleap.it
Altre InformazioniAltre Informazioni• Dove posso ottenere maggiori Dove posso ottenere maggiori
informazioniinformazioni• www.devleap.itwww.devleap.it• www.microsoft.com/msdn/italywww.microsoft.com/msdn/italy• msdn.microsoft.commsdn.microsoft.com• www.gotdotnet.comwww.gotdotnet.com
• Developer resourcesDeveloper resources• Microsoft Visual Studio.NETMicrosoft Visual Studio.NET• Microsoft .NET Framework SDKMicrosoft .NET Framework SDK• Microsoft Developer NetworkMicrosoft Developer Network
![Page 56: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog:](https://reader035.vdocuments.mx/reader035/viewer/2022062404/5542eb49497959361e8b4bfa/html5/thumbnails/56.jpg)
www.devleap.it
Introduzione al .NET FrameworkIntroduzione al .NET Framework
I vostri feedback sono importantiI vostri feedback sono importanti•ScriveteciScriveteci
Grazie della partecipazione– A presto