La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

.NET: ambiente di esecuzione

Presentazioni simili


Presentazione sul tema: ".NET: ambiente di esecuzione"— Transcript della presentazione:

1 .NET: ambiente di esecuzione
Marco Russo MCSD MCAD MCSE+I MCSA MCDBA MCT Mail: Italian blog:

2 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

3 Chi siete ? Chi conosce Java? Chi conosce Visual Basic?
Chi conosce C++? Chi conosce COM? Chi conosce C#? Chi conosce VB.NET?

4 Agenda Ambiente di esecuzione Codice IL e codice nativo
MSIL JIT NGEN Ruolo dei metadati Verifica (PEVERIFY) Runtime host Decompilazione

5 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

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

7 Codice interpretato Sorgenti Interprete Output

8 Codice nativo Sorgenti Compilatore Codice nativo (.EXE) Output

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

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

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

12 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

13 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

14 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

15 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)

16 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

17 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

18 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

19 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

20 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

21 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

22 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

23 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

24 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

25 Tool di decompilazione
ILDASM Si ottiene il sorgente IL che può essere modificato e ricompilato Anakrino Il primo decompilatore che ricostruisce codice C# da qualsiasi linguaggio Reflector Decompilatore che supporta decompilazione in C#, VB.NET e Delphi (da qualsiasi linguaggio originale) Salamander Meno diffuso, è un prodotto commerciale:

26 Tool di obfuscation Demeanor Dotfuscator preemptive.com/products/dotfuscator/index.html eXtensible C# Spices.NET LSW-IL Obfuscator Salamander XenoCode

27 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 Thinstall

28 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

29 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!!)

30 Altre Informazioni Dove posso ottenere maggiori informazioni
msdn.microsoft.com Developer resources Microsoft Visual Studio.NET Microsoft .NET Framework SDK Microsoft Developer Network

31 Introduction to .NET I vostri feedback sono importanti Scriveteci
Grazie della partecipazione A presto


Scaricare ppt ".NET: ambiente di esecuzione"

Presentazioni simili


Annunci Google