.NET: ambiente di esecuzione

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Introduzione al .NET Framework
Traduzione ed Interpretazione
Linguaggio R Raffaele Miele Dipartimento di Matematica e Statistica Università degli Studi di Napoli Federico II
Ambiente Java.
Corso di Fondamenti di Informatica
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.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A1 Introduzione a Java.
Code::Blocks Ambiente di sviluppo.
Classe III A A.s – 2011 Sistemi di Elaborazione e Trasmissione dell’Informazione 4 ore settimanali (2 laboratorio) Docenti Prof. Alberto Ferrari.
Code::Blocks Ambiente di sviluppo.
Recupero debito quarto anno Primo incontro
Sviluppare Smart Document di Office 2003 Introduzione Luca Regnicoli MCSD.NET MCSE+I MCDBA MCT
Corrado Cavalli Microsoft .NET MVP
Crea il tuo sito con Web Matrix e il Web Hosting su ASP.NET
Consumare Web Service Andrea Saltarello
I linguaggi di programmazione
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
Web Services.
Massa Laura Mela Enrica
Generalità Linguaggio e Macchina Astratta
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Dr. Francesco Fabozzi Corso di Informatica
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.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
Introduzione al linguaggio Java
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Struttura dei sistemi operativi (panoramica)
Componenti: interoperabilità. Tecnologia per componenti Sono necessari Un linguaggio (con annessi e connessi) per esprimere le interfacce (IDL) Un ambiente.
CAPITOLO 1 JAVA: UN TUFFO NEL LINGUAGGIO E NELL'AMBIENTE.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
RISORSE WEB Internet Per un uso consapevole delle risorse della Rete
Espressioni condizionali
Elaborazione di Franco Grivet Chin
Introduzione ad ASP.net
Introduzione a Java.
Argomenti della lezione
C# LE BASI 2007 Prima lezione - Introduzione.
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.
1 Introduzione. 2 Le motivazioni In.net Framework iniziato nel 2000 rappresenta una svolta nella tecnologia Microsoft per andare oltre ai linguaggi esistenti.
VIRTUALIZZAZIONE Docente: Marco Sechi Modulo 1.
La tecnologia CWM Alessandro Lorenzi A.A.2002/2003.
Implementazione di un linguaggio ad alto livello (con riferimento a Java)
Sistemi Informativi sul Web
Creare pagine web Xhtlm. Struttura di una pagina.
Visual Studio Tools per Office System 2003 Fabio Santini Developer Evangelist Developer And Platform Evangelism.
BIOINFO3 - Lezione 361 RICERCA DI SIMILARITA TRA SEQUENZE Un altro problema comunissimo in bioinformatica è quello della ricerca di similarità tra sequenze.
ASP – Active Server Pages Introduzione Pagine Web Statiche & Dinamiche(ASP)
DAmb Sergio Lovrinich 28 Settembre Descrizione Questo Software si propone di eseguire una Analisi del Codice Sorgente, mettendo a disposizione Strumenti.
Internet e HTML Diffusione di informazioni mediante la rete Internet.
© 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.
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
Ingegneria del software Modulo 3 - Tecniche di implementazione Unità didattica 1 - Ingegneria dei componenti Ernesto Damiani Università degli Studi di.
Il software Claudia Raibulet
Eprogram informatica V anno.
.NET vNext e lo sviluppo web cross-platform
XVRC2 Emanuele Ruffaldi Giugno Tre esperimenti con S3D ► Estensioni del Linguaggio ► Pre-Compilatore ► Esecuzione dentro il Java L C J.
Programmazione orientata agli Oggetti Introduzione a Java.
Transcript della presentazione:

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

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

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

Agenda Ambiente di esecuzione Codice IL e codice nativo MSIL JIT NGEN Ruolo dei metadati Verifica (PEVERIFY) Runtime host Decompilazione 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 interpretato Sorgenti Interprete Output www.devleap.it

Codice nativo Sorgenti Compilatore Codice nativo (.EXE) Output www.devleap.it

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

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

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

Motori JIT Inizialmente previsti 4 motori: Motore Descrizione Dove si trova JIT Attuale implementazione OptiJit Codice più ottimizzato Non implementato FastJit Esecuzione JIT più veloce .NET Compact Framework Native (Pre-Jit) Compilazione preventiva, assembly compilato salvato in GAC NGEN.EXE www.devleap.it

Uso di NGEN Va bene su librerie di base che non hanno forti dipendenze da altri assembly Codice nativo valido solo per la macchina su cui si compila con NGEN Non si può ridistribuire su altri PC Minori ottimizzazioni In certi casi compila comunque con JIT Modificata versione di un componente globale da cui dipende Non riesegue NGEN in automatico www.devleap.it

Metadati Concetto chiave in .NET Informazioni sui tipi di un assembly Generati automaticamente dai compilatori Estendibili da terze parti Formato binario rappresentabile con XML: XML Schema (XSD) Serializzazione e deserializzazione oggetti a runtime in XML Convertibile da/a COM type library www.devleap.it

Metadati Descrizione di tipi e assembly Simile a COM Type Library Simile a RTTI C++ Reflection Codice sorgente Serialization (es. SOAP) Designers Compilatore Altri Compilatori Debugger Metadati (+ codice) Type Browser Profiler Proxy Generator Schema Generator Codifica XML (SDL) www.devleap.it

Metadati Descrizione di un assembly Descrizione dei tipi Identità: nome, versione, cultura [, pubblic key] Tipi esportati Assembly da cui dipende Permessi necessari per l’esecuzione Descrizione dei tipi Nome, visibilità, classe base, interfacce implementate Attributi custom Definiti dall’utente Definiti dal compilatore Definiti dal Framework www.devleap.it

Tool che usano i metadati Compilatori Compilazione condizionale Ambienti RAD Informazioni sulle proprietà dei componenti Categoria Descrizione Editor personalizzati di tipi di proprietà Analisi dei tipi Intellisense ILDASM www.devleap.it

Compilatori e metadati Import dei tipi di dati cross-language Emettono i metadati insieme al codice Descrivono i tipi definiti e usati Registrano gli assembly esterni referenziati Registrano informazioni di versione Possono interpretare attributi custom Obsolete CLS Compliance (conformità CLS) Compilazione condizionale (es. debug) Attributi specifici del linguaggio www.devleap.it

Type safety Isolamento della memoria Type safety (sicurezza dei tipi) Consente l’esecuzione sicura di più applicazioni nello stesso processo Type safety (sicurezza dei tipi) Assicura isolamento della memoria Assicura operazioni corrette rispetto al sistema di sicurezza Non è richiesta dal Runtime Verification Assicura type safety www.devleap.it

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

Runtime Host Esecuzione di un’applicazione .NET MSCOREE.DLL Processo Win32 (app.exe) MSCOREE.DLL MYCOMCLASS.DLL Managed World KERNEL.DLL MYNETCLASS.DLL Marshaling MSCORLIB.DLL www.devleap.it

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

Decompilazione Grazie al codice IL e ai metadati è più facile fare reverse engineering Non è evitabile in senso assoluto Si può rendere più ostico il compito di ricostruire il codice originale (o qualcosa che ci assomigli) Tecniche disponibili: Obfuscation Compilazione in codice nativo www.devleap.it

Tool di decompilazione ILDASM Si ottiene il sorgente IL che può essere modificato e ricompilato Anakrino www.anakrino.org Il primo decompilatore che ricostruisce codice C# da qualsiasi linguaggio Reflector www.aisto.com/roeder/dotnet Decompilatore che supporta decompilazione in C#, VB.NET e Delphi (da qualsiasi linguaggio originale) Salamander www.remotesoft.com/salamander Meno diffuso, è un prodotto commerciale: www.devleap.it

Tool di obfuscation Demeanor www.wiseowl.com/products/DemeanorEnterprise.aspx Dotfuscator preemptive.com/products/dotfuscator/index.html eXtensible C# www.resolvecorp.com Spices.NET www.9rays.net/cgi-bin/components.cgi?act=1&cid=86 LSW-IL Obfuscator www.lesser-software.com/ilobf.htm Salamander www.remotesoft.com/salamander/obfuscator.html XenoCode www.xenocode.com www.devleap.it

Tool per avere eseguibili unmanaged Creano un eseguibile unmanaged che scompatta l’assembly in memoria e lo esegue I metadati non sono visibili direttamente Prodotti disponibili: Deploy .NET www.junglecreatures.com/jungle/index.jsp Thinstall http://thinstall.com/dotnet www.devleap.it

Tool per creare codice nativo Conversione del codice IL in codice nativo, lasciando un formato di eseguibile managed (con metadati, eventualmente offuscati) Risultato analogo ad eseguibile prodotto in Managed C++ con #pragma unmanaged Massima compatibilità con altri assembly Problemi di portabilità su diversi processori Minori ottimizzazioni del JIT Solo un prodotto: Salamander .NET Protector www.remotesoft.com/salamander/protector.html 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

Introduction to .NET I vostri feedback sono importanti Scriveteci Grazie della partecipazione A presto info@DevLeap.it www.devleap.it