Introduzione al .NET Framework

Slides:



Advertisements
Presentazioni simili
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Advertisements

Corso di Fondamenti di Informatica
Elaborazione di Franco Grivet Chin
Carlo Becchi .NET Tutorial Carlo Becchi
INTRODUZIONE Il framework.NET. Un po di storia Sin dalla prima versione del sistema operativo Windows (1990 circa), nacque la necessità di far comunicare.
Corrado Cavalli Microsoft .NET MVP
ASP .NET & Web Service: Introduzione
Visual Studio Tools For Office 2005 Fabio Santini. NET Senior Developer Evangelist Microsoft Italy.
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Consumare Web Service Andrea Saltarello
.NET: ambiente di esecuzione
Fabio Mignani Senior Technology Specialist
Massimiliano Bosco – Aliware – Torino – Project 2003 Sviluppare Soluzioni EPM con Project Server (2/4)
1 Smart Client distribuzione e aggiornamento Fabio Santini.
Strumenti di sviluppo Microsoft Campagna incentivi per Software Assurance Opportunità di vendita.
Sistema di gestione flussi documentali
Web Services.
Java Enterprise Edition (JEE)
1 Strutture dati nel supporto a run time. 2 Entità presenti quando un programma va in esecuzione §programmi dutente (compilati) §routines del supporto.
Laboratorio di Progettazione Web Introduzione AA 2009/2010 Chiara Renso ISTI - CNR -
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Università degli Studi di Modena e Reggio Emilia Facoltà dIngegneria - sede di Modena Corso di Laurea in Ingegneria Informatica Interoperabilità di componenti.
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Java2 Esercitazioni del corso di Sistemi Informativi Marina Mongiello
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.
NESSUS.
Distributed Object Computing
Introduzione al linguaggio Java
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Organizzazione della Memoria (Unix) Text contiene le istruzioni in linguaggio macchina del codice eseguibile, può essere condiviso in caso di processi.
WOA 2003 Una piattaforma per lo sviluppo di applicazioni multi-agente Boccalatte - Gozzi - Grosso 10/09/2003.
Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Utilizzo di ASP.NET.
Introduzione ad ASP.net
Architettura Java/J2EE
Introduzione a Java.
C# LE BASI 2007 Prima lezione - Introduzione.
Ing. Enrico Lecchini BetaTre S.r.l.
Chinosi Michele – matr.: La seconda release di Virtuose basata su database XML La seconda release di Virtuose basata su.
Introduzione a C#.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
Guida IIS 6 A cura di Nicola Del Re.
1 Introduzione. 2 Le motivazioni In.net Framework iniziato nel 2000 rappresenta una svolta nella tecnologia Microsoft per andare oltre ai linguaggi esistenti.
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA Facoltà di Ingegneria “Enzo Ferrari” – Sede di Modena Corso di Laurea Specialistica in Ingegneria Informatica.
Fare clic per modificare lo stile del titolo Fare clic per modificare stili del testo dello schema – Secondo livello Terzo livello – Quarto livello » Quinto.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
Server Web in una rete Windows Sommario Meccanismi di accesso remoto Meccanismi di accesso remoto Introduzione ai Server Web Introduzione ai Server.
Sistemi Informativi sul Web
Gianpaolo Cecere Introduzione
Visual Studio Tools per Office System 2003 Fabio Santini Developer Evangelist Developer And Platform Evangelism.
Applicazione Web Informatica Abacus Informatica Classe VIA 2008/2009 N.Ceccon INF (01) Revisione 4.0 settembre 2008.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
Protocolli e architetture per WIS. Web Information Systems (WIS) Un Web Information System (WIS) usa le tecnologie Web per permettere la fruizione di.
Architetture a componenti Java per la realizzazione di DSS distribuiti Giordano Vicoli - ENEA 28 Ottobre 2003.
Sviluppo per Pocket PC con SQL Server CE 2.0 Fabio Santini Silvano Coriani.NET Developer Evangelist Microsoft Corporation.
© Copyright NTT DATA Italia – All Rights Reserved The information contained in this document is the property of NTT DATA Italia S.p.A. and the addressee.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
PiattaformePiattaformePiattaformePiattaforme Antonio Cisternino 11 Marzo 2005 OpenSourceOpenSourceOpenSourceOpenSource e ProprietarieProprietarieProprietarieProprietarie.
Ingegneria del software Modulo 3 - Tecniche di implementazione Unità didattica 1 - Ingegneria dei componenti Ernesto Damiani Università degli Studi di.
 Primo livello: Field Management. A questo livello le informazioni sono relative ai dispositivi di campo  Secondo livello:
Ingegneria del software Modulo 3 -Tecniche d’implementazione Unità didattica 1 -Ingegneria dei componenti Ernesto Damiani Università degli Studi di Milano.
Eprogram informatica V anno.
Architetture software
.NET vNext e lo sviluppo web cross-platform
Programmazione orientata agli Oggetti Introduzione a Java.
Eprogram informatica V anno. Programmare in rete.
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Transcript della presentazione:

Introduzione al .NET Framework Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: marco@devleap.it Italian blog: http://blogs.devleap.com/marco.blog

DevLeap? Che roba è? 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

Chi siete ? Chi conosce Java? Chi conosce Visual Basic? Chi conosce C++? Chi conosce COM? www.devleap.it

Agenda Perché .NET Common Language Runtime Semplificazione: sviluppo e deployment Affidabilità del codice Principali servizi del Framework Piattaforma multi-linguaggio Unificazione modello programmazione Librerie disponibili www.devleap.it

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

Perché .NET Difficile effettuare sviluppo omogeneo Molto tempo viene dedicato a far comunicare i vari “strati” Serve un salto qualitativo per semplificare lo scenario Ma non c’era COM ? www.devleap.it

Codice e strutture dati Prima di COM Applicazione Codice e strutture dati Prima di COM, le applicazioni erano entità completamente separate, senza integrazione www.devleap.it

L’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 www.devleap.it

.NET: oltre l’era di COM Con “.NET Framework Common Language Runtime”, i componenti sono costruiti su uno strato comune. Gli oggetti interagiscono direttamente. www.devleap.it

Architettura .NET Framework VB C++ C# JScript … Visual Studio.NET Common Language Specification Web Services User Interface Data and XML Non fermarsi a spiegare, il significato dei vari componenti arriva durante la presentazione Base Class Library Common Language Runtime www.devleap.it

Cosa è .NET È un ambiente di esecuzione (runtime environment) Semplifica lo sviluppo e il deployment Aumenta l’affidabilità del codice È completamente indipendente da COM È fortemente integrato con COM Unifica il modello di programmazione www.devleap.it

Ambiente di esecuzione Concetti chiave: MSIL: Microsoft Intermediate Language CLR: Common Language Runtime CTS: Common Type System CLS: Common Language Specification www.devleap.it

Codice MSIL Codice MSIL Compilatore .NET Sorgenti (Assembly) .EXE/.DLL Codice nativo Output Compilatore JIT www.devleap.it

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

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

Common Language Runtime Sviluppo iniziato nel ’97 Nato inizialmente come ambiente di esecuzione migliorato per COM+ Metadati distribuiti in troppe posizioni diverse Registry COM+ catalog DLL Modello nuovo per fare cose vecchie Sviluppo di una API (C, C++) Sviluppo di wrapper COM per l’API www.devleap.it

Common Language Runtime Class Loader IL to Native Compilers Code Manager Garbage Collector Security Engine Debug Engine Type Checker Exception Manager Thread Support COM Marshaler Base Class Library Support Notare che la BCL astrae molti dei servizi del sistema operativo sottostante, ed è anche presente come libreria di .NET Framework a livello superiore rispetto al CLR. www.devleap.it

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

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

Deployment semplificato Assembly Unità minima per la distribuzione, il versioning e la security Simile alle DLL, ma aggiunge meta-dati sul contenuto attraverso il “Manifest” 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 dell’assembly Note su distribuzione assembly multi-file – si possono copiare file per file, ma è meglio fare un .MSI per l’installazione. Approfondimento: www.devleap.it www.devleap.it

Assembly a modulo singolo Codice IL Metadati Manifest Modulo (file PE) Nota: si riprendono gli assembly più avanti, non approfondire troppo su questa slide e sulla precedente. Assembly a modulo singolo www.devleap.it

Deployment semplificato Installazione senza effetti collaterali Le applicazioni e i componenti possono sempre essere condivisi o privati Esecuzione side-by-side Diverse versioni dello stesso componente possono coesistere, anche nello stesso processo www.devleap.it

Dove sono gli assembly Assembly privati Assembly condivisi Directory applicazione (e sub-directory) Assembly condivisi Global Assembly Cache (GAC) c:\windows\assembly Assembly scaricati da URL Download cache c:\Documents and Settings\%USERNAME%\Local Settings\Application Data\assembly\dl2 GACUTIL.EXE Tool per esaminare GAC e download cache GACUTIL /l – per vedere GAC GACUTIL /ldl – per vedere download cache www.devleap.it

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

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

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

Assembly in AppDomain Processo AppDomain AppDomain Assembly Assembly Shared Assembly Shared Assembly Uno shared assembly carica una sola volta in memoria il codice dell’assembly; i dati restano locali ai due AppDomain. Per scaricare un assembly bisogna scaricare un intero AppDomain. www.devleap.it

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

Garbage Collector - fase 1: Mark NextObjPtr Root set Oggetti “vivi” Oggetti non raggiungibili Spazio libero www.devleap.it

Garbage Collector - fase 2: Compact Spazio recuperato NextObjPtr Root set Oggetti “vivi” Spazio libero www.devleap.it

GC e distruzione deterministica In alcuni casi serve un comportamento di finalizzazione deterministica: Riferimenti a oggetti non gestiti Utilizzo di risorse che devono essere rilasciate appena termina il loro utilizzo Non si possono usare i finalizzatori, che non sono richiamabili direttamente Implementare l’interfaccia IDisposable www.devleap.it

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

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

Gestione degli errori Uniforme per tutte le classi Gestione strutturata delle eccezioni Concetto implementato nel CTS Disponibile in tutti i linguaggi con sintassi diverse Concetti universali: Lanciare un’eccezione Catturare un’eccezione Codice di uscita da un blocco controllato (finally) Non ha costi elevati (codice/prestazioni) www.devleap.it

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

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

Principali servizi del CLR Garbage collector Gestione del ciclo di vita degli oggetti Problema della distruzione deterministica Reflection Analisi dei metadati di un assembly Generazione di un assembly dinamico Remoting Chiamata di componenti remoti (.NET) Interoperabilità (COM, Platform Invoke) Piccola intro, si approfondisce con le prossime slide www.devleap.it

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

Elaborazione sincrona e asincrona d() e() f() g() h() Tempo Elaborazione asincrona a() f o r k c() e() g() j o i n h() Thread 1 b() d() f() Thread 2 www.devleap.it

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

Common Language Specification Common Language Runtime Librerie di classi 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

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

Estendibilità delle classi Il Framework non è una “scatola nera” Qualsiasi classe .NET può essere estesa mediante ereditarietà Diversamente da COM, si usa e si estende la classe stessa, non uno strato intermedio (wrapper) L’ereditarietà è cross-language www.devleap.it

.NET Framework Web Services User Interface Data Xml Base Class Library www.devleap.it

.NET Framework System.Web System.Windows.Forms System.Drawing UI Design ComponentModel Compilation HtmlControls Handlers WebControls Hosting System.Drawing Caching Security Drawing2D Printing Configuration SessionState Imaging Text System.Data System.Xml OleDb Common Xsl Schema SqlClient SQLTypes XPath Serialization System Collections IO Security Runtime InteropServices Configuration Reflection Text Remoting Diagnostics Resources Threading Serialization Globalization www.devleap.it

Base Framework System Collections Security Configuration Text Diagnostics Threading Globalization Runtime InteropServices IO DEV303 – strutture dati in .NET (Francesco Balena) Remoting Reflection Serialization Resources www.devleap.it

Data e XML System.Data Common OleDb SqlClient SqlTypes System.Xml Schema Xsl Serialization XPath www.devleap.it

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

Windows Forms System.Windows.Forms Design ComponentModel System.Drawing Drawing2D Printing Imaging Text www.devleap.it

Common Language Specification Common Language Runtime Linguaggi e Tool 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

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

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

Common Language Specification Common Language Runtime Visual Studio.NET 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

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

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

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

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