Outils De Développement Pour .NET Framework

Outils De Développement Pour .NET Framework

Outils de développement pour .NET Framework 8QGHU&RQVWUXFWLRQ (Q&RQVWUXFWLRQ Didier Donsez 8QLYHUVLWp-RVHSK)RXULHU *UHQREOH ,0$,0$*/65$'(/( 'LGLHU'RQVH]#LPDJIU 'LGLHU'RQVH]#LHHHRUJ Didier Donsez, 2003, Outils de développement pour 1 .NET 2 Petit rappel sur .NET et C# I .NET • Développement Multi langage • C#, C++, Java Script, Eiffel, Component Pascal, APL, Cobol, Oberon, Perl, Python, Scheme, Smalltalk, Standard ML, Haskell, Mercury, Oberon et Java/J++ • CIL (Common Intermediate Language) • CTS (Common Type System) 7 • CLI (Common Language Infrastructure) ( 1 U X R • CLR (CLI Runtime implémenté par MicroSoft) S W Q H • JIT, pré-JIT (à l’installation, ou développement) P H S S R O I H C# : le langage « Post-Java » Y p G H G • « Syncrétisation » de Java et de C++ V O L W X 2 I Standardisation ECMA (European Computer Manufacturers Association) · http://www.ecma.ch ] H V Q • ECMA-334 CLI (Format COFF, CTS, Metadata, …) R ' U H L G • ECMA-335 C# L ' 3 1RQ0LFUR6RIW .NET I Motivations • .NET sur des OS non Windows (Unix, Linux, MacOS X, …) • Implémentations libres • Outils libres I Project 7 ( 1 U • ROTOR (MicroSoft) sauf Linux (Shared Sources) X R S W Q H • Mono project (Ximian) P H S S R O H Y • DotGNU (Free Software Foundation) p G H G V O L W X 2 ] H V Q R ' U H L G L ' 4 Implémentations I MicroSoft · Commerciales · .NET CLR · Compact .NET CLR • Code partagé • « Rotor » : Shared Source CLI 7 ( 1 U 3.6 Mloc ( 10,721 fichiers) X R S W Q H KWWSPVGQPLFURVRIWFRPQHWVVFOL P H S S R • GC moins performant, JIT différent O H Y p G H • Une sous partie du Runtime (pas de WebForm, ADO, ASP.NET, …) G V O L W X 2 I Mono ] H V I Q DotGNU Portable .NET R ' U H L G L ' 5 8QGHU&RQVWUXFWLRQ Compilateurs (Q&RQVWUXFWLRQ I MicroSoft I Mono • Compilateur et JIT efficace • Peu de processeurs 7 ( 1 U X I R DotGNU S W Q H P H S • GCC Front End S R O H Y p G • Linux et dizaine d’OS H G V O L W X • Nombreux processeurs 2 ] H V Q R ' U H L G L ' 6 Outils du SDK I Assembly Generation Utility (al.exe) I Assembly Registration Utility (gac.exe) I MSIL Assembler (ilasm.exe) I MSIL Disassembler (ildasm.exe) I C++ Compiler (cl.exe) I C# Compiler (csc.exe) 7 I ( Visual Basic Compiler (vbc.exe) 1 U X R I J# Compiler (en extra) S W Q H P I H PE File Format Viewer (dumpbin.exe) S S R O H Y I Type Library Exporter (tlbexp.exe) p G H G I V O Type Library Importer (tlbimp.exe) L W X 2 I XML Schema Definition Tool (xsd.exe) ] I H Shared Name Utility (sn.exe) V Q R ' U I Web Service Utility (wsdl.exe) H L G L ' 7 Décompilateurs I MSIL Disassembler (Ildasm.exe) · a companion tool to the MSIL Assembler (Ilasm.exe). Ildasm.exe takes a portable executable (PE) file that contains Microsoft intermediate language (MSIL) code and creates a text file suitable as input to Ilasm.exe. 7 ( 1 U X R S W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 'LGLHU'RQVH]2XWLOVGHGpYHORSSHPHQWSRXU1(7 D é c o m p i l a t e u r s 8 9 8QGHU&RQVWUXFWLRQ Ofuscateur (Q&RQVWUXFWLRQ I Dotfuscator · (http://www.preemptive.com/dotfuscator) 7 ( 1 U X R S W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 10 8QGHU&RQVWUXFWLRQ Profilage (Q&RQVWUXFWLRQ I Identification • des points chauds (ERWWOHQHFNKRWVSRW) • des fuites mémoires … I Outils 7 ( 1 U X R S W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 11 Profilage I Il existe un namespace $SSOLFDWLRQ ICorProfilerInf o 7 ( 1 U X R S W Q H 5XQWLPH 3URILOHU P H S S R O H Y p G H G V O L W X 2 ] ICorProfilerCallba H V Q R ' ck U H L G L ' 12 Génération (ou émission) dynamique de code I Motivations • AOP, Dynamic Proxy (Réseau, BD, …), … I namespace System.Reflection.Emit • Permet la contruction d’assemblies, modules, classes à la 7 ( 1 volée U X R S W Q H I Voir P H S S R O H Y • http://www.dina.dk/~sestoft/rtcg/rtcg.pdf p G H G V O L W • Rechercher Cisternino & Kennedy, Language independent X 2 program generation ] H V Q R ' U H L G L ' 13 Exemple de Génération de code (i) private static 7\SH CreateHelloWorld(AppDomain appDomain, AssemblyBuilderAccess access) { $VVHPEO\1DPH assemblyName = new AssemblyName(); assemblyName.Name= "EmittedAssembly"; // Create the dynamic assembly. $VVHPEO\%XLOGHU assembly = appDomain.DefineDynamicAssembly(assemblyName, access); 7 ( 1 U // Create a dynamic module X R S W module= assembly.DefineDynamicModule("EmittedModule"); Q 0RGXOH%XLOGHU H P H S S R O H Y // Define a public class named "HelloWorld" in the assembly. p G H G helloWorldClass = module.DefineType("HelloWorld", TypeAttributes.Public); V 7\SH%XLOGHU O L W X 2 // Define a private String field named "Greeting" in the type. ] H V Q )LHOG%XLOGHU greetingField= helloWorldClass.DefineField( R ' U H L "Greeting", typeof(String), FieldAttributes.Private); G L ' 14 Exemple de Génération de code (ii) // Create the constructor. Type[] constructorArgs = { typeof(String) }; &RQVWUXFWRU%XLOGHU constructor = helloWorldClass.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard, constructorArgs); // GenerateIL for the method. The constructor calls its superclass constructor. // The constructor stores its argument in the privatefield. 7 ( 1 constructorIL= constructor.GetILGenerator(); ,/*HQHUDWRU U X R S W constructorIL. ( ); Q (PLW 2S&RGHV/GDUJB H P H S ConstructorInfo superConstructor = typeof(Object).GetConstructor(new Type[0]); S R O H Y p constructorIL.Emit(2S&RGHV&DOO, superConstructor); G H G V O constructorIL.Emit( ); L 2S&RGHV/GDUJB W X 2 constructorIL.Emit(2S&RGHV/GDUJB); ] constructorIL.Emit( , greetingField); H 2S&RGHV6WIOG V Q R ' constructorIL.Emit( ); U 2S&RGHV5HW H L G L ' 15 Exemple de Génération de code (iii) // Create the GetGreeting method. 0HWKRG%XLOGHU getGreetingMethod= helloWorldClass.DefineMethod("GetGreeting", MethodAttributes.Public, typeof(String), null); // GenerateIL for GetGreeting. ,/*HQHUDWRU methodIL= getGreetingMethod.GetILGenerator(); 7 ( methodIL.Emit(OpCodes.Ldarg_0); 1 U X R methodIL.Emit(OpCodes.Ldfld, greetingField); S W Q H P H methodIL.Emit(OpCodes.Ret); S S R O H Y p G H G V O // Bake theclass HelloWorld. L W X 2 return(helloWorldClass. ()); &UHDWH7\SH ] H } V Q R ' U H L G L ' 16 Execution I Assembly Loader I Security I Class Loader I IL to Native Compiler · Native.exe+GC Table 7 ( 1 U X R S W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 17 Test I Unitaire · CLR · NUnit · ASP.NET 7 ( · NUnitWeb 1 U X R S http://kristopherjohnson.net/cgi-bin/twiki/view/KJ/NUnitWeb W Q H P H S · Web Services S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 18 Normes de programmation I C# · ??? · Style Checkers ?? I VB 7 ( 1 U X R S W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 19 8QGHU&RQVWUXFWLRQ Sécurité (Q&RQVWUXFWLRQ I Gestion de certificats I Signature de code I Code sellé ?? VHDOHG non réversible I Vérifieur de code 7 I Pré-vérifieur de code ( 1 U X R S • Vérifie en autre la présence de unmanaged section W Q H P H S S R O H Y p G H G V O L W X 2 ] H V Q R ' U H L G L ' 20 Gestion de projets I Makefile • nmake (.NET SDK) I Tâches (optionnelles) ANT • Le .NET SDK doit être installé; variables d’environnement configurées • <csc> compilateur C# • <ilasm> assembleur d’IL 7 ( 1 • <WsdlToDotnet> générateur de stub/skel SOAP en C#, VB, .. U X R S W • Exemple Q H P H S • <csc optimize="true" debug="false" docFile="documentation.xml" warnLevel="4" S R O H Y unsafe="false" targetType="exe" incremental="false" definitions="RELEASE" p G H G excludes="src/unicode_class.cs" V O L W X mainClass = "MainApp" destFile="NetApp.exe" /> 2 I NAnt (http://nant.sourceforge.net/) ] H V Q R · Un portage de ANT sur .NET ' U H L G L ' 21 Convertisseurs Java vers C# / .NET I Aztec J2CS, ArtinSoft JLCA, DotNetJ, … I Microsoft JCLA (Java Language Conversion Assistant) · Assistant pour VisualStudio .NET de Convertion · Java ou J++ vers J# ou C# 90 % de appels au JDK 1.1.4 convertis 7 ( -DYDWHFKQRORJ\ 8SJUDGHWR- 8SJUDGHWR& 1 U X R S W Q H Java language Java language C# language P H S S R Applet Not converted Windows Form control O H Y p G H G JavaBean JavaBean C# class V O L W X 2 AWT frame AWT frame Windows Form ] WFC Form WFC Form Windows Form H V Q R ' Compiled library Compiled library Not converted U H L G L ' Resource file ResXfile ResXfile 22 Migration J2EE vers .NET I J2EE I .NET · Servlets, JSP · ASP .NET · EJB · Session Bean · Entity Bean 7 CMP ( 1 U BMP X R S W Q H • JDBC P H S · ADO .NET S R O H Y p · Transact SQL G H • Procédures Stockés G V O L W X · Oracle PL/SQL, ¼ 2 · Web Services ] H V Q R ' U H L G L ' 23 Ateliers (CASE) I MicroSoft VisualStudio .NET I MicroSoft WebMatrix • Gratuit (intègre Cassini (Web Server) • Pas de complétion au codage ! 7 ( 1 U X R S W Q H P H I S Eclipse + plugin S R O H Y p G H G V O L W X 2 I Autres (Inprise ??) ] H V Q R ' U H L G L ' 24 Mono Project (Ximian) KWWSZZZJRPRQRFRP I Motivation • Effort pour créer une version libre de .NET Framework.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    39 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us