1 / 32

Introduction to Microsoft .NET

Introduction to Microsoft .NET. Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: http://blogs.devleap.com/marco.blog. Benvenuti. Un giorno di full immersion in .NET Cosa è veramente Cosa si può fare Come farlo Come cominciare, per lo meno…. Chi siamo.

Download Presentation

Introduction to Microsoft .NET

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Microsoft .NET Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: http://blogs.devleap.com/marco.blog

  2. Benvenuti • Un giorno di full immersion in .NET • Cosa è veramente • Cosa si può fare • Come farlo • Come cominciare, per lo meno… www.devleap.it

  3. Chi siamo • www.DevLeap.it • Un gruppo di 5 persone con tanta voglia di • Studiare a fondo le tecnologie • Capire il “behind the scenes” • Implementare soluzioni reali • Confrontarsi con le problematiche reali • Sperimentare nuove idee • Facciamo Corsi, Conferenze, Training • Scriviamo libri • http://www.devleap.it/fullcontact www.devleap.it

  4. Chi siete ? • Chi conosce Visual Basic? • Chi conosce C++? • Chi conosce Java? • Chi conosce C#? • Chi conosce VB.NET? www.devleap.it

  5. Agenda • CTS: Common Type System • Tipi value e tipi reference • Boxing • Confronti di equivalenza e identità • CLS: Common Language Specification • FxCop www.devleap.it

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

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

  8. Piattaforma multi-linguaggio • Libertà di scelta del linguaggio • Tutte le funzionalità di .NET Framework sono disponibili a tutti i linguaggi .NET • I componenti di un’applicazione possono essere scritti con diversi linguaggi • Impatto sui tool • Tool disponibili per tutti i linguaggi:Debugger, Profiler, Analisi “Code coverage”, ecc. www.devleap.it

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

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

  11. Common Type System • Tutto è un oggetto • Due categorie di tipi: • Tipi reference (riferimento) • Allocati su heap gestito • Tipi value (valore) • Allocati su stack o in oggetti gestiti (reference) • Tutti i tipi value possono essere visti come tipi reference • Boxing www.devleap.it

  12. Common Type System Type Value Type (sequenza di byte) Reference Type (indirizzo di memoria) www.devleap.it

  13. Value Type Value Type Built-In User Defined Enums User Types Integer types Typed Refs Float Types www.devleap.it

  14. Reference Type Reference Types Objects Pointers Interfaces Function Managed Unmanaged www.devleap.it

  15. Oggetti Objects Name Equivalence Structure Equivalence Arrays User Defined Delegates Boxed Value Types Vectors MD or NZB Boxed Enums www.devleap.it

  16. Estendibilità tipi value • I value type comprendono: • Tipi primitivi (built-in) • Tipi definiti dall’utente • Enum • Strutture • I tipi value definiti dall’utente hanno le stesse capacità dei tipi primitivi www.devleap.it

  17. Tipi value e reference in memoria 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 } Stack Heap v.height v.width height width r Class CSize www.devleap.it

  18. Equivalenza e identità • Il confronto tra oggetti può essere: • di equivalenza • Object.Equals: oggetti con stesso tipo e uguale contenuto • di identità • Object.ReferenceEquals: stessa istanza o entrambi null • ==: dipende dal tipo (come ReferenceEquals o altro) • Object.GetHashCode: rappresentazione univoca istanza Stack Heap r1 height width r2=r1; r2 Class CSize www.devleap.it

  19. “Teo” 19 .Equals(d) ==d a false false b true false c true true “Ugo” “Ugo” 38 38 Equivalenza e identità a b c d www.devleap.it

  20. Alla scoperta dei tipi class Contatto { int id; double eta; bool interesse; } Type Contatto this.GetType() typeof( Contatto ) Type Int32 typeof( Int32 ) this.id.GetType() id eta interesse Type Double this.eta.GetType() typeof( Double ) Type Boolean this.interesse.GetType() typeof( Boolean ) www.devleap.it

  21. Alla scoperta dei tipi Type Contatto typeof( Contatto ) GetType() GetType() Type Int32 typeof( Int32 ) GetType() Type Type Type Double typeof( Double ) GetType() typeof( Type ) Type Boolean typeof( Boolean ) GetType() www.devleap.it

  22. Tipi nativi www.devleap.it

  23. Strutture ed enum public struct Size { public int height; public int weight; } public enum Breath { None, Sweet, Garlicy, Oniony, Rancid, Horrid, Sewerlike } [ System.Flags ] public enum Organs : byte { None = 0, Heart = 0x0001, Lung = 0x0002 Liver = 0x0004, Kidney = 0x0008 } www.devleap.it

  24. Boxing • 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” può tornaread essere value (unboxing) • System.Object è il tipo universale www.devleap.it

  25. Boxing Stack int i = 123; object o = i; int k = (int)o; i Heap 123 int i = 123; o int 123 object o = i; Boxing k 123 int j = (int)o; Unboxing www.devleap.it

  26. Common Language Specification FujitsuCOBOLExtensions MicrosoftManaged C++Extensions Common Type System COBOL C++ CLS Common Type System troppo esteso per un solo linguaggio Common Language Specification per uso cross-linguaggio www.devleap.it

  27. Common Language Specification • Regole per contratti “pubblici” • Non si applica all’interno di un assembly • CTS interamente disponibile per contratti interni ed implementazione • Tre tipi di uso: • Consumer • Extender • Framework • Pattern di progettazione e denominazione www.devleap.it

  28. CLS: alcuni dei vincoli • Regole per gli identificatori • Unicode, case-sensitivity • Keyword • Regole di overload più restrittive • Nessun puntatore unmanaged • Devono essere supportate interfacce multiple con metodi dello stesso nome • Regole per costruttori degli oggetti • Pattern denominazione proprietà ed eventi www.devleap.it

  29. FxCop • Tool per l’analisi statica del codice • Verifica conformità a linee guida • Controllo conformità CLS già fatto dai compilatori • Verifica altri tipi di incoerenze • Estendibilità delle regole • Si possono scrivere regole custom per verificare il rispetto di eventuali standard aziendali • Un tool indispensabile per un team di sviluppo! http://www.gotdotnet.com/team/fxcop/ www.devleap.it

  30. Considerazioni finali • Distinguere tipi value dai tipi reference • Disegnare librerie con CLS • Usare FxCop! • A prima vista è tutto semplice, ma è bene sapere cosa c’è dietro (tanto!!) www.devleap.it

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

  32. Introduzione a .NET I vostri feedback sono importanti • Scriveteci • Grazie della partecipazione • A presto • info@DevLeap.it www.devleap.it

More Related