Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail:...

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

Transcript of Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail:...

Page 1: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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

Marco Russo
Demo Assembly e metadati con ILDASM?
Page 21: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: .

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: .

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: .

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: .

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: .

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

Marco Russo
Demo Garbage Collector più avanti
Page 26: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: .

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

Marco Russo
Spiegare a voce vantaggi di prestazioni dati dagli AppDomain per chiamate tra componenti normalmente separati in processi diversi
Page 27: Www.devleap.it Introduzione al.NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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: .

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

[email protected]