La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Le componenti di un calcolatore CPU CPU Intel x86, AMD Intel x86, AMD Memoria volatile Memoria volatile RAM RAM Memorie di massa Memorie di massa Hard.

Presentazioni simili


Presentazione sul tema: "Le componenti di un calcolatore CPU CPU Intel x86, AMD Intel x86, AMD Memoria volatile Memoria volatile RAM RAM Memorie di massa Memorie di massa Hard."— Transcript della presentazione:

1 Le componenti di un calcolatore CPU CPU Intel x86, AMD Intel x86, AMD Memoria volatile Memoria volatile RAM RAM Memorie di massa Memorie di massa Hard disk, dispositivi USB, PC Card Hard disk, dispositivi USB, PC Card Rete Rete Wired e wireless LAN Wired e wireless LAN Bluetooth Bluetooth Altri dispositivi Altri dispositivi Porte di comunicazione (seriale, parallela, USB, firewire, ecc.) Porte di comunicazione (seriale, parallela, USB, firewire, ecc.)

2 Il linguaggio della CPU OFFSET (12 bit) 0 PDE (10 bit)PTE (10 bit) 1221223111 20 bits12 bits20 bits12 bits PAGE 4KB RAM 0 4GB CR#3 ix86 Page DirectoryPage Table 1023 0 0 FA 00 08 CF AA 21 88 ……….

3 Il linguaggio della CPU Codici operativi e dati Indirizzi di memoria, porte di comunicazione, ecc. Istruzioni direttamente eseguibili dal processore Molto difficili da ricordare… Molta potenza… nessun controllo!! Estrema possibilità di fare errori nella scrittura Nessuno strumento di verifica del codice Nessun approccio logico alla scrittura del codice Solo istruzioni di basso livello

4 Il sistema operativo Windows, Unix/Linux, VMS, OS/400, ecc. Windows, Unix/Linux, VMS, OS/400, ecc. Inizialmente Inizialmente Un insieme di servizi per consentire alle applicazioni di non dover reinventare tutte le volte la classica ruota Un insieme di servizi per consentire alle applicazioni di non dover reinventare tutte le volte la classica ruota Una serie di controlli per evitare che le applicazioni possano danneggiarsi tra loro Una serie di controlli per evitare che le applicazioni possano danneggiarsi tra loro Oggi Oggi Tutto quello appena detto più.. Tutto quello appena detto più.. Una interfaccia grafica sulle risorse del sistema Una interfaccia grafica sulle risorse del sistema Un punto di controllo e configurazione del nostro PC Un punto di controllo e configurazione del nostro PC

5 Come funziona Windows? Parliamo ovviamente di Windows NT/2000/XP!! Parliamo ovviamente di Windows NT/2000/XP!! Un kernel che fornisce tutti i sistemi di base Un kernel che fornisce tutti i sistemi di base Gestione dei processi in esecuzione Gestione dei processi in esecuzione Gestione della memoria Gestione della memoria Controllo su tutti i dispositivi attraverso drivers Controllo su tutti i dispositivi attraverso drivers Un insieme di interfacce di programmazione (API) per accedere ai servizi del kernel Un insieme di interfacce di programmazione (API) per accedere ai servizi del kernel Librerie di funzioni: USER, GDI, KERNEL, ecc. Librerie di funzioni: USER, GDI, KERNEL, ecc. Diffici da utilizzare direttamente Diffici da utilizzare direttamente Una shell, o interfaccia grafica, per permettere linterazione con lutente Una shell, o interfaccia grafica, per permettere linterazione con lutente

6 Le caratteristiche fondamentali Windows è un sistema multi-threading Windows è un sistema multi-threading Programmi e operazioni diverse possono essere eseguite in parallelo (se abbiamo più CPU..) Programmi e operazioni diverse possono essere eseguite in parallelo (se abbiamo più CPU..) Windows è un sistema basato sul concetto di memoria virtuale Windows è un sistema basato sul concetto di memoria virtuale Ogni programma ha a disposizione 4Gb di memoria fittizia Ogni programma ha a disposizione 4Gb di memoria fittizia Il sistema operativo si occupa di assegnare lo spazio nella memoria fisica e nel file di paginazione ai vari programmi Il sistema operativo si occupa di assegnare lo spazio nella memoria fisica e nel file di paginazione ai vari programmi I programmi non possono danneggiare il kernel I programmi non possono danneggiare il kernel I programmi sono isolati e non possono danneggiarsi tra loro I programmi sono isolati e non possono danneggiarsi tra loro

7 Come si programma Windows? Dipende dal tipo di applicazione che vogliamo realizzare Dipende dal tipo di applicazione che vogliamo realizzare Basata su finestre grafiche Basata su finestre grafiche Web Web Un servizio di sistema Un servizio di sistema Scrivendo un programma in un linguaggio di programmazione che viene trasformato in codice macchina Scrivendo un programma in un linguaggio di programmazione che viene trasformato in codice macchina Compilato Compilato Interpretato Interpretato Il programma interagisce con il sistema operativo attraverso le API Il programma interagisce con il sistema operativo attraverso le API Per disegnare una finestra Per disegnare una finestra Per scrivere sulla stampante, ecc. Per scrivere sulla stampante, ecc. Un esempio di applicazione Windows Un esempio di applicazione Windows

8 Lintroduzione delle macchine virtuali Inizialmente i programmi Windows erano scritti in linguaggio C, poi C++ Inizialmente i programmi Windows erano scritti in linguaggio C, poi C++ Molta potenza per il programmatore Molta potenza per il programmatore Poco controllo sullaccesso ai servizi di sistema Poco controllo sullaccesso ai servizi di sistema Molto difficile da utilizzare in modo corretto Molto difficile da utilizzare in modo corretto Ogni linguaggio aveva le sue caratteristiche Ogni linguaggio aveva le sue caratteristiche I suoi tipi di dati I suoi tipi di dati Le sue librerie di funzioni Le sue librerie di funzioni Il suo modo di gestire la memoria, gli errori, ecc. Il suo modo di gestire la memoria, gli errori, ecc.

9 Lintroduzione delle macchine virtuali Cera la necessità di trovare qualcosa che funzionasse da astrazione dal sistema operativo per permettere al programmatore di concentrarsi su un modello virtuale di sistema Cera la necessità di trovare qualcosa che funzionasse da astrazione dal sistema operativo per permettere al programmatore di concentrarsi su un modello virtuale di sistema Concetto apparso inizialmente in ambito accademico Concetto apparso inizialmente in ambito accademico Java è probabilmente limplementazione più famosa di questo concetto Java è probabilmente limplementazione più famosa di questo concetto Il.NET Framework di Microsoft è la soluzione creata per tutta la famiglia Windows Il.NET Framework di Microsoft è la soluzione creata per tutta la famiglia Windows

10 Applicazioni monolitiche Applicazion e Codice e strutture dati

11 Lera di COM / CORBA COM e CORBA consentono di integrare dei componenti. Ogni componente deve però fornire dei punti di contatto e gli oggetti non possono interagire direttamente C++ / Java / VB IDL Marshaling

12 .NET: oltre lera di COM Con.NET Framework Common Language Runtime, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente.

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

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

15 Cosa è.NET È un ambiente di esecuzione (runtime environment) È un ambiente di esecuzione (runtime environment) È una serie di librerie e di strumenti per lo sviluppo di applicazioni È una serie di librerie e di strumenti per lo sviluppo di applicazioni Per client Windows Per client Windows Per il Web Per il Web Per la realizzazione di Web Services Per la realizzazione di Web Services Semplifica lo sviluppo e il deployment Semplifica lo sviluppo e il deployment Aumenta laffidabilità del codice Aumenta laffidabilità del codice È completamente indipendente da COM È completamente indipendente da COM È fortemente integrato con COM È fortemente integrato con COM Unifica il modello di programmazione Unifica il modello di programmazione

16 Ambiente di esecuzione Concetti chiave: Concetti chiave: MSIL: Microsoft Intermediate Language MSIL: Microsoft Intermediate Language CLR: Common Language Runtime CLR: Common Language Runtime CTS: Common Type System CTS: Common Type System CLS: Common Language Specification CLS: Common Language Specification

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

18 Codice MSIL Codice nativo Output Sorgenti Compilatore JIT Codice MSIL (Assembly).EXE/.DLL Compilatore.NET Codice + metadati

19 Codice MSIL Codice nativo Output Compilatore JIT Codice MSIL (Assembly).EXE/.DLL Compilatore.NET Sorgenti Ambiente di esecuzione.NET Runtime

20 Common Language Runtime IL CLR offre vari servizi alle applicazioni IL 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)

21 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

22 Processo Win32 (app.exe) MSCOREE.DLL Managed World Runtime Host Esecuzione di unapplicazione.NET Esecuzione di unapplicazione.NET MSCORLIB.DLL MYCOMCLASS.DLL KERNEL.DLL MYNETCLASS.DLL Marshaling

23 Runtime Host MSCOREE.DLL MSCOREE.DLL Ultima DLL COM rimasta... Ultima DLL COM rimasta... _CorDllMain: Entry-point del loader per caricare ed eseguire il codice IL _CorDllMain: Entry-point del loader per caricare ed eseguire il codice IL MSCORLIB.DLL MSCORLIB.DLL Implementa CTS (Common Type System) Implementa CTS (Common Type System) Contiene BCL (Base Class Library) Contiene BCL (Base Class Library) Non si vede con DEPENDS.EXE, usare ADEPENDS.EXE Non si vede con DEPENDS.EXE, usare ADEPENDS.EXE Diversi tipi processi host Diversi tipi processi host Shell exe, ASP.NET, Internet Explorer, Servizi NT Shell exe, ASP.NET, Internet Explorer, Servizi NT

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

25 Indipendenza dalla piattaforma.NET è unimplementazione di CLI.NET è unimplementazione di CLI Common Language Infrastructure Common Language Infrastructure CLI è uno standard ECMA, definito con C# CLI è uno standard ECMA, definito con C# ECMA-334, ECMA-335 ECMA-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) DotGNU DotGNU Intel OCL (Open CLI Library) Intel OCL (Open CLI Library) …

26 Distribuzione semplificata delle applicazioni Assembly Assembly Unità minima per la distribuzione, il versioning e la security Unità minima per la distribuzione, il versioning e la security Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il Manifest Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il Manifest Può essere composto da uno o più file 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 dellassembly Il manifest può risiedere in un file EXE/DLL separato, oppure in un EXE/DLL che contiene codice dellassembly

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

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

29 Type safety Isolamento della memoria Isolamento della memoria Consente lesecuzione sicura di più applicazioni nello stesso processo Consente lesecuzione sicura di più applicazioni nello stesso processo Type safety (sicurezza dei tipi) Type safety (sicurezza dei tipi) Assicura isolamento della memoria Assicura isolamento della memoria Assicura operazioni corrette rispetto al sistema di sicurezza Assicura operazioni corrette rispetto al sistema di sicurezza Non è richiesta dal Runtime Non è richiesta dal Runtime Verification Verification Assicura type safety Assicura type safety

30 Type safety Si eliminano: Si eliminano: Cast non sicuri Cast non sicuri Variabili non inizializzate Variabili non inizializzate Indici di array fuori limite (out-of-bounds) Indici di array fuori limite (out-of-bounds) PEVERIFY.EXE PEVERIFY.EXE Tool linea di comando per verificare requisiti di type safety di un assembly Tool linea di comando per verificare requisiti di type safety di un assembly

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

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

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

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

35 Piattaforma multi-linguaggio Libertà di scelta del linguaggio Libertà di scelta del linguaggio Tutte le funzionalità di.NET Framework sono disponibili a tutti i linguaggi.NET Tutte le funzionalità di.NET Framework sono disponibili a tutti i linguaggi.NET I componenti di unapplicazione possono essere scritti con diversi linguaggi I componenti di unapplicazione possono essere scritti con diversi linguaggi Impatto sui tool Impatto 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.

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

37 CTS: Common Type System Alla base di tutto ci sono i tipi (le classi) Alla base di tutto ci sono i tipi (le classi) Fortemente tipizzato (compile-time) Fortemente tipizzato (compile-time) Object-oriented Object-oriented Campi, metodi, tipi nidificati, proprietà,... Campi, metodi, tipi nidificati, proprietà,... Overload di funzioni (compile-time) Overload di funzioni (compile-time) Dispatch metodi virtuali risolto a runtime Dispatch metodi virtuali risolto a runtime Ereditarietà singola di implementazione Ereditarietà singola di implementazione Ereditarietà multipla di interfacce Ereditarietà multipla di interfacce

38 Common Type System Qualsiasi applicazione.NET è realizzata definendo un insieme di tipi + utilizzo (istanziazione) di questi ultimi insieme a quelli predefiniti da MS (Base Class Library) Qualsiasi applicazione.NET è realizzata definendo un insieme di tipi + utilizzo (istanziazione) di questi ultimi insieme a quelli predefiniti da MS (Base Class Library) Due categorie di tipi: Due categorie di tipi: Tipi reference (riferimento) Tipi reference (riferimento) Allocati su heap gestito Allocati su heap gestito Tipi value (valore) Tipi value (valore) Allocati su stack o in oggetti gestiti (reference) Allocati su stack o in oggetti gestiti (reference) Tutti i tipi value possono essere visti come tipi reference Tutti i tipi value possono essere visti come tipi reference Boxing Boxing

39 Estendibilità tipi value I value type comprendono: I value type comprendono: Tipi primitivi (built-in) Tipi primitivi (built-in) Tipi definiti dallutente Tipi definiti dallutente Enum Enum Strutture Strutture I tipi value definiti dallutente hanno le stesse capacità dei tipi primitivi I tipi value definiti dallutente hanno le stesse capacità dei tipi primitivi

40 Tipi value e reference in memoria StackHeap height width Class CSize v.height v.width r public struct Size { public int height; public int weight; } public class CSize { public int height; public int weight; } void Main() { Size v; // v istanza di Size v.height = 100; // ok CSize r; // r è un reference r.height = 100; // illegale, r non assegnato r = new CSize(); // r fa riferimento a un CSize r.height = 100; // ok, r inizializzata }

41 Tipi nativi CLRC#VB.NET ObjectobjectObject StringstringString BooleanboolBoolean CharcharChar SinglefloatSingle DoubledoubleDouble DecimaldecimalDecimal SBytesbyten.d. BytebyteByte Int16shortShort UInt16ushortn.d. Int32intInteger UInt32uintn.d. Int64longLong UInt64ulongn.d.

42 Boxing I tipi value si possono sottoporre a boxing per supportare le funzionalità tipiche degli oggetti I tipi value si possono sottoporre a boxing per supportare le funzionalità tipiche degli oggetti Un tipo value boxed è un clone indipendente Un tipo value boxed è un clone indipendente Un tipo value boxed può tornare ad essere value (unboxing) Un tipo value boxed può tornare ad essere value (unboxing) System.Object è il tipo universale System.Object è il tipo universale

43 Boxing int i = 123; object o = i; int k = (int)o; 123 i o int 123 123 k int j = (int)o; object o = i; int i = 123; Stack Heap Boxing Unboxing

44 Gestione degli errori Uniforme per tutte le classi Uniforme per tutte le classi Gestione strutturata delle eccezioni Gestione strutturata delle eccezioni Concetto implementato nel CTS Concetto implementato nel CTS Disponibile in tutti i linguaggi con sintassi diverse Disponibile in tutti i linguaggi con sintassi diverse Concetti universali: Concetti universali: Lanciare uneccezione Lanciare uneccezione Catturare uneccezione Catturare 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)

45 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

46 Principali servizi del CLR Garbage collector Garbage collector Gestione del ciclo di vita degli oggetti Gestione del ciclo di vita degli oggetti Problema della distruzione deterministica Problema della distruzione deterministica Reflection Reflection Analisi dei metadati di un assembly Analisi dei metadati di un assembly Generazione di un assembly dinamico Generazione di un assembly dinamico Remoting Remoting Chiamata di componenti remoti (.NET) Chiamata di componenti remoti (.NET) Interoperabilità (COM, Platform Invoke) Interoperabilità (COM, Platform Invoke)

47 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

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

49 Dove sono gli assembly Assembly privati Assembly privati Directory applicazione (e sub-directory) Directory applicazione (e sub-directory) Assembly condivisi Assembly condivisi Global Assembly Cache (GAC) Global Assembly Cache (GAC) c:\windows\assembly c:\windows\assembly Assembly scaricati da URL Assembly scaricati da URL Download cache Download cache c:\windows\assembly\download c:\windows\assembly\downloadGACUTIL.EXE Tool per esaminare GAC e download cache Tool per esaminare GAC e download cache

50 Deployment degli assembly XCOPY XCOPY Applicazioni ASP.NET Applicazioni ASP.NET.CAB.CAB Applicazioni Windows Forms - Code Download Applicazioni Windows Forms - Code Download.MSI (Windows Installer).MSI (Windows Installer) Applicazioni Windows Forms Applicazioni Windows Forms Installazione in GAC di assembly condivisi Installazione in GAC di assembly condivisi Configurazione shortcut Configurazione shortcut

51 Metadati Descrizione di un assembly Descrizione di un assembly Identità: nome, versione, cultura [, pubblic key] Identità: nome, versione, cultura [, pubblic key] Tipi esportati Tipi esportati Assembly da cui dipende Assembly da cui dipende Permessi necessari per lesecuzione Permessi necessari per lesecuzione Descrizione dei tipi Descrizione dei tipi Nome, visibilità, classe base, interfacce implementate Nome, visibilità, classe base, interfacce implementate Attributi custom Attributi custom Definiti dallutente Definiti dallutente Definiti dal compilatore Definiti dal compilatore Definiti dal Framework Definiti dal Framework

52 Strong Name Sinonimo: shared name Sinonimo: shared name Traduzione ufficiale: nome sicuro Traduzione ufficiale: nome sicuro Lo scopo è garantire: Lo scopo è garantire: Identità dellassembly Identità dellassembly Nessuna modifica del codice Nessuna modifica del codice Riferimenti univoci Riferimenti univoci Non garantisce identità dellautore Non garantisce identità dellautore Nel caso usare tecnologie come la firma digitale con certificati Nel caso usare tecnologie come la firma digitale con certificati

53 Strong Name Nome completo assembly: Nome completo assembly: Name (di solito è il nome del file) Name (di solito è il nome del file) Version (major/minor/build/revision) Version (major/minor/build/revision) CultureInfo* (lingua/zona) CultureInfo* (lingua/zona) Originator/PublicKey* (identità assembly) Originator/PublicKey* (identità assembly) * = opzionale nomeassembly, Version=1.2.3.4, Culture=en-US, PublicKeyToken=1234123412341234 using System.Reflection; [assembly: AssemblyVersion(1.2.3.4)] [assembly: AssemblyCulture(en-US)] [assembly: AssemblyKeyFile(mycompany.snk)] Nome assembly visualizzato Codice C#

54 Strong Name Assembly firmato digitalmente Assembly firmato digitalmente Coppia di chiavi pubblica/privata Coppia di chiavi pubblica/privata Chiave pubblica 1024 bit nellassembly Chiave pubblica 1024 bit nellassembly Riferimenti allassembly con Public Token Riferimenti allassembly con Public Token hash 64-bit della chiave pubblica completa hash 64-bit della chiave pubblica completa Hash di tutto il file Digital Signature Hash di tutto il file Digital Signature SN.EXE per gestire file di chiavi SN.EXE per gestire file di chiavi Attributi [AssemblyKeyFile()] e [AssemblyDelaySign()] per associare chiavi agli assembly Attributi [AssemblyKeyFile()] e [AssemblyDelaySign()] per associare chiavi agli assembly

55 Firma digitale dellassembly Assembly Public Key Hash File RSA Digital Signature Library.dll RSA Digital Signature Codice IL Metadati Manifest Public Key Private Key RSA Digital Signature Public Key Hash File

56 Firma digitale dellassembly Tool e attributi: Tool e attributi: SN.EXE per gestire file di chiavi SN.EXE per gestire file di chiavi Attributi [AssemblyKeyFile()] e [AssemblyDelaySign()] Attributi [AssemblyKeyFile()] e [AssemblyDelaySign()] Integrazione con compilatori/VS.NET Integrazione con compilatori/VS.NET In alternativa: In alternativa: AL.EXE AL.EXE

57 Strong Name & Strong Reference PE/COFFHeader CLR Header Code StrongApp.exe using System.Reflection; [assembly: AssemblyKeyFile( publicprivate.snk)] [assembly: AssemblyDelaySign( false )] csc /t:library StrongLib.cs Assembly Reference stronglib Public Key Token (8 bytes) PE/COFFHeader CLR Header Code Public Key (128 bytes + header 32 bytes) Signature StrongLib.dll Private Key (436 bytes) Publicprivate.snk

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

59 Estendibilità delle classi Il Framework non è una scatola nera Il 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-language Lereditarietà è cross-language

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

61 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 XPath Xsl Serialization Schema Hosting Handlers Compilation

62 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à esistenti Si possono sfruttare skill già esistenti Common Language Specification Common Language Specification Consumer: Può usare.NET Framework Consumer: Può usare.NET Framework Extender: Può estendere.NET Framework Extender: Può estendere.NET Framework

63 Linguaggi Microsoft fornisce: Microsoft fornisce: VB, C++, C#, J# VB, C++, C#, J# 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, …

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

65 Considerazioni finali Un nuovo modello di sviluppo per la piattaforma applicativa Microsoft Un nuovo modello di sviluppo per la piattaforma applicativa Microsoft Un nuovo ambiente di esecuzione integrato tra diverse tipologie di applicazioni Un nuovo ambiente di esecuzione integrato tra diverse tipologie di applicazioni Framework di classi già molto esteso Framework di classi già molto esteso Ma soprattutto coerente! Ma soprattutto coerente! Quasi tutto completamente estendibile Quasi tutto completamente estendibile Alta integrabilità con il codice esistente Alta integrabilità con il codice esistente A prima vista è tutto semplice, ma è bene andare a dare uno sguardo dietro le quinte!! A prima vista è tutto semplice, ma è bene andare a dare uno sguardo dietro le quinte!!


Scaricare ppt "Le componenti di un calcolatore CPU CPU Intel x86, AMD Intel x86, AMD Memoria volatile Memoria volatile RAM RAM Memorie di massa Memorie di massa Hard."

Presentazioni simili


Annunci Google