Tour Horizont.Net

1 224 vues

Publié le

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 224
Sur SlideShare
0
Issues des intégrations
0
Intégrations
2
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • .NET = 16 bits -> 32 bits (Mais sans obligation de réecriture)
  • Elimine la plomberie Plus d’entrée dans le registre, GUIDs, fichiers IDL, HRESULTs, IUnknown, AddRef/Release, CoCreateInstance, etc. Orientation Objet Classes et héritage complétement supportés Même entre les languages! Compatibilité avec l’existant Les classes .NET peuvent être utilisées comme des classes COM Les classes COM peuvent être utilisées par des classes .NET Gestion automatique du cycle de vie Tous les objets .NET sont garbage collectés Pas de pointeurs ou de références circulaires Multi-generational mark-and-compact GC Self-configuring, dynamically tuning Traitement des erreurs Unification du mode de traitement des erreurs (plus de bool ou HRESULTs) Several compilation models Native (e.g. Managed C++) MSIL (e.g. VB and C#) No interpreter: Install-time or run-time IL to native compilation Code correctness and type-safety IL can be verified to guarantee type-safety No unsafe casts, no uninitialized variables, no out-of-bounds array indexing Evidence-based security Based on origin of code as well as user Extensible permissions Assemblies Unité de déploiement, versioning, et de sécurité Semblables aux DLLs, mais auto descriptives via les manifestes Installation Zero-impact Les Applications et composants peuvent être privés ou partagés Side-by-side execution De multiple versions du même composant peuvent coexister même dans le même process The CLR increases the reliability of applications in the following ways: It reduces conflicts between different versions of components. When the CLR loads an application, it uses the assembly manifest and the metadata to ensure that it loads the correct version of all components. With public or shared assemblies, which have been registered in the Global Assembly Cache (GAC), there should not be any problems with multiple versions of a component coexisting on a machine. This means that if the managed code needs to access a database, then the CLR uses the information in the manifest to find and load the correct version of the data access component. It reduces the number of bugs and security holes due to common programming mistakes. The CLR also uses its knowledge about the managed code to ensure that the managed code doesn't include common programming errors that would cause it to perform incorrect functions, such as trying to use an integer for a function pointer, trying to force numeric data into a location allocated for text, or overwriting code while loading data (causing a buffer overflow). Reducing bugs that result from these common programming errors means that managed code not only runs more reliably but also leaves fewer holes or vulnerabilities for attackers to exploit. Increased security makes it harder to execute hostile code. Because the CLR can understand the identity and origin of the code in each application, it can determine whether the application is allowed to perform certain tasks (such as reading or writing to local storage or sending e-mail). This adds another level to the current security model, where the application runs in the security context of the user account that is running it (for example, all applications on an administrator's machine run with administrator-level permissions). Less memory is lost to "leaks." Memory and components that are allocated and never released ("memory leaks") cause systems to run out of memory, either crashing the system or requiring a reboot to free the memory. The CLR's memory management and garbage collection greatly reduce the likelihood of this problem occurring. "Plumbing" functions reduce bugs and save developer time . Finally, the CLR provides many of the low-level or "plumbing" functions related to memory and object management, data marshalling, and threads. This not only creates better reliability by reducing the potential for bugs but it also enables application programmers to concentrate on the "line of business" code for their specific application rather than (re-)implementing standard Windows plumbing.
  • NotePad / VS / Dreamwever
  • On retrouve les 4 grands verteurs de .NET 1. Le cœur = System 2. Acced aux données = ADO.NET 3. Présentation = ASP.NET Windows.Forms 4. Communication = XML
  • Assembly = Représentation physique. .NETModule = .obj (mais obj de l’IL bien sure)
  • Quesqu’on appel l’unification dans .NET ???
  • Depuis les API de l’eau est passé sous les ponts…. (win3.1…) Divergence entre C++/MFC et VB et ASP Runtime VB avec la problématique de version .NET ré unifie en conservant le « meilleurs » des différents mondes
  • .NET multilangage (30 supportés) - VB à été dénaturé pour être supporté par .NET - C++ c'est le seul qui couvre le développement natif Windows (Win32) et .NET - C# c'est le seul qui donne accés a tout la richesse de .NET C’est la CLS qui va permettre de généré un même IL
  • .NET multilangage (30 supportés) - VB à été dénaturé pour être supporté par .NET - C++ c'est le seul qui couvre le développement natif Windows (Win32) et .NET - C# c'est le seul qui donne accés a tout la richesse de .NET
  • Valeur : Type Simple / Structure Référence : Objet et Interface Mais on ne fait jamais ce code il est fait automatiquement par le compilateur quand il a besoin de convertir un variable Valeur en Référence.
  • 1/ Deux boxing car int et Date sont des types valeur. Donc on passe par System.Int32 et System.Date pour allez chercher .ToString(); 2/ Pour 0 et 1 Boxing car entier, pour « zero » et « un » string donc référence donc pas de boxing 3/ Piège !!! Il n’y a pas de boxing car d n’est pas utilisé dans une situation qui nécésite le boxing le compilateur retrouve this sur la pile directement.
  • 4/ array de valeur donc pas de boxing 5/ ArrayList Add prend un objet donc boxing 6/ Les interfaces sont traité en Référence et structure est en valeur donc boxing
  • Cette unification des concepts Objet rend Windows Orienté Objet comme on ne travaille qu’avec le FrameWork Par un simple abonnement à un événement Windows du Framework on va pourvoir s’abonné à une modification d’un répertoire par exemple. On ne touche pas à l’API Win32 !
  • Il existe aussi WebMatrix ! Mais uniquement développement Web
  • Comme je vous le disais, la plus petite entité de déploiement dans .Net est l’assembly Mais que va t’on trouver dans ce machin la !!
  • PE : Portable Executable On peut voir les clrheader avec DumpBin /clrheader baBAExe.exe
  • Namespace = Unité logique Assembly = Unité physique
  • CODE BINAIRE, pas d’interprétation Mécanisme identique et avec cache pour les aspx IE voir test dans une application Windows Ngen permet de mettre un version compilé dans Global Assembly Cache pour évité cette first compilation Ngen baBAExe.exe Ngen baBADll.dll
  • Assembly Loader = mscoree.dll
  • Side by Side : Rien dans la base de registre et rien dans Windows/System32 GAC : Pré JIT avec ngen (disponible pour tous les applications) Download : C’est pour les applications exe s’exécutant à travers IE
  • Point 3 revient a faire des objet COM en .NET
  • Logiquement un développeur s’y met en une journée. Avec l’ADO du monde unmanaged, nous avions ébauché le mode déconnecté. Aujourd’hui, le mode déconnecté est en natif sur la plate-forme
  • Que trouve t-on dans l’ADO.Net .Net Provider, SQL, OLEDB Oracle et ODBC disponible sur le Net en Beta DataReader qui permet un accés Foward Only DataAdapter qui permet un accès à la base et on se déconnecte DataSet :Mode déconnecté (Géniale on peut travaillé indifféremment XML / Base) ADO Architecture : 2 modes
  • Zoom sur les DataSets il servent a transporter les données
  • Mapping et correspondance entre ADO et XML A tout moment on peut passer de l’un a l’autre…(+ ou – automatique)
  • Starter Kits = Accélérateur d’application
  • Slide marcma (évolution)
  • No runtime software dictated
  • Tour Horizont.Net

    1. 1. ASP.NET To2Point « Tour d’horizon .NET » © 2001 Microsoft Corporation. All rights reserved.
    2. 2. Plan de la matinée <ul><li>.NET Plateform </li></ul><ul><ul><li>Introduction </li></ul></ul><ul><ul><li>Présentation de la plate forme .NET </li></ul></ul><ul><ul><li>CLR et Framework </li></ul></ul><ul><li>Développement avec .NET </li></ul><ul><ul><li>WEB Application </li></ul></ul><ul><ul><li>WEB Service </li></ul></ul><ul><ul><li>Tablette PC – Pocket PC </li></ul></ul>
    3. 3. Introduction <ul><li>Historique </li></ul><ul><ul><li>Présentation de la plate forme .NET </li></ul></ul>
    4. 4. Une histoire riche… 1990 GUI 1981 PC 1995 Internet MS-DOS BASIC Windows Visual BASIC IE, IIS Visual Studio
    5. 5. Une nouvelle ère Windows MS-DOS 1981 PC BASIC Visual BASIC XML Web Services 2000 Visual Studio .NET 1990 GUI 1995 Internet IE, IIS Visual Studio
    6. 6. Visual Studio.NET, .NET Framework .NET Services Expérience Utilisateur .NET Devices, .NET Enterprise Servers
    7. 7. .NET Clients Nouvelle génération de périphériques <ul><li>Windows-powered </li></ul><ul><li>Supporte XML et les services Web </li></ul><ul><li>Fonctionne en autonome ou en mode connecté </li></ul>
    8. 8. .NET c’est quoi ? Composants Sécurité Flux XML Simplicité et puissant Protocoles Standard Services Web Clients Riches Pages Web Mobilité XML Modèle Relationnel Toutes les bases
    9. 9. Objectifs du .NET Framework <ul><li>Environnement d’exécution robuste et sécurisé </li></ul><ul><ul><li>Common Language Runtime (CLR) </li></ul></ul><ul><ul><li>Code managé : GC, Type Safe.. </li></ul></ul><ul><ul><li>Runtime Security </li></ul></ul><ul><li>Déploiement et administration simplifiés </li></ul><ul><ul><li>Xcopy, Versioning, Continuité de service </li></ul></ul><ul><li>Intégration de l’existant </li></ul><ul><ul><li>Multiples langages de programmation </li></ul></ul><ul><ul><li>Interopérabilité COM et Win32 </li></ul></ul><ul><ul><li>Compatibilité « side by side » </li></ul></ul><ul><li>Développement d’applications simplifié </li></ul><ul><ul><li>Modèle de programmation unifié </li></ul></ul><ul><ul><li>Elever le niveau d’abstraction </li></ul></ul><ul><ul><ul><li>classe, interface, héritage, propriété, event, constructor, exception… </li></ul></ul></ul><ul><ul><ul><li>Elimination complète de la plomberie COM </li></ul></ul></ul><ul><ul><li>Bibliothèque de classe riche et extensible </li></ul></ul><ul><ul><li>Intégration native des standards Web </li></ul></ul>
    10. 10. Le cœur du Framework CLI CLR Framework Class Library Données et XML XML Web services Windows Forms Web Forms Common Language Specification VB C++ C# … J# Visual Studio .NET Soumis à l’ ECMA Soumis à l’ECMA Spécification ouvertes Accès aux données basé XML Basé XML, SOAP, GXA
    11. 11. The big picture Application .NET <ul><li>Services </li></ul><ul><li>JIT Compilation </li></ul><ul><li>Sécurité </li></ul><ul><li>Base Classes </li></ul><ul><li>Application .NET </li></ul><ul><li>Managed Memory </li></ul><ul><li>Managed Exécution </li></ul><ul><li>Notion d’ Assembly </li></ul>GC Memory DLL Managed Code : Assembly CLR Unmanaged Code Win32 COM COM+ 1.0 Process WIN32 Managed Memory
    12. 12. CLR : Vue d’ensemble Class Loader Base Class Library Support IL to Native Compilers Code Manager Garbage Collector Security Engine Debug Engine Type Checker Exception Manager Thread Support COM Marshaler
    13. 13. .NET Framework System System.Data (ADO .NET) System.XML System.Web (ASP .NET) Diagnostics Configuration Collections Net IO Threading Text Security Common OLEDB SQLTypes SQLClient XPath XSL Runtime InteropServices Remoting Serialization Serialization Configuration SessionState Caching Security Services UI HTMLControls WebControls System.Drawing Imaging Drawing2D Text Printing System.Windows.Forms Design ComponentModel Schema Reflection Resources Globalization ServiceProcess Description Discovery Protocols
    14. 14. Un peu de code <ul><li>Le baBA… </li></ul>
    15. 15. Assembly (1) <ul><li>Notion d’assembly : Assemblage exposant une ou plusieurs class (type). </li></ul><ul><ul><li>Dés que l’on fait du code .NET on génère des assemblies : </li></ul></ul><ul><ul><ul><li>EXE </li></ul></ul></ul><ul><ul><ul><ul><li>(présence d’un Main) </li></ul></ul></ul></ul><ul><ul><ul><li>DLL </li></ul></ul></ul><ul><ul><ul><ul><li>(objets COM, auto descriptif) </li></ul></ul></ul></ul><ul><ul><ul><li>.NETModule </li></ul></ul></ul><ul><ul><ul><ul><li>(à linker plus tard…) </li></ul></ul></ul></ul><ul><ul><ul><li>Pages ASPX </li></ul></ul></ul><ul><ul><ul><li>WEBService ASMX </li></ul></ul></ul>
    16. 16. ba BA du code .NET <ul><li>Création d’une assembly </li></ul><ul><ul><li>Metadata </li></ul></ul><ul><ul><li>Class publique </li></ul></ul><ul><ul><li>Méthode publique </li></ul></ul>Utilisation de l’assembly Build des assemblies
    17. 17. baBA Linux <ul><li>Test de baBA sour linux avec l’implémentation mono </li></ul><ul><ul><li>Utilisation de la version compilé Windows (IL) </li></ul></ul><ul><ul><li>Recompilation sous Linux </li></ul></ul><ul><ul><li>Exécution sous Windows de la version compilé Linux </li></ul></ul>
    18. 18. Unification
    19. 19. Unification du développement Héritage, Contrôle, performance Windows API MFC/ATL ASP Stateless, mélange de code/HTML VB Forms RAD, Composition, Délégation .NET Framework RAD, Héritage, contrôle et performance, WebDynamic et WebServices
    20. 20. Unification des syntaxes <ul><li>La plate-forme .Net est indépendante du langage </li></ul><ul><ul><li>Tous les langages accèdent aux services fournis par la CLR </li></ul></ul><ul><li>Commun Langage Spécification (CLS) </li></ul><ul><ul><li>Spécification d’écriture des compilateurs « syntaxiques » </li></ul></ul><ul><ul><li>Chaque langage utilise et étend le framework .Net </li></ul></ul><ul><ul><li>Les langages .Net sont interopérables. </li></ul></ul><ul><ul><li>Déposé à L’ECMA </li></ul></ul>Common Language Specification VB C++ C# J# …
    21. 21. Unification des syntaxes <ul><li>Perl </li></ul><ul><li>Python </li></ul><ul><li>Cobol </li></ul><ul><li>Haskell </li></ul><ul><li>ML </li></ul><ul><li>Jscript </li></ul><ul><li>Ada </li></ul><ul><li>APL </li></ul><ul><li>Eiffel </li></ul><ul><li>Pascal </li></ul><ul><li>Managed C++ </li></ul><ul><li>Visual Basic </li></ul><ul><li>C# </li></ul><ul><li>J# </li></ul><ul><li>SmallTalk </li></ul><ul><li>Oberon </li></ul><ul><li>Scheme </li></ul><ul><li>Mercury </li></ul><ul><li>Oz </li></ul><ul><li>Objective Caml </li></ul><ul><li>… </li></ul>
    22. 22. Common Type System Unification des types <ul><li>CTS Déposé a l’ECMA </li></ul><ul><li>Types définit au niveau du CLR </li></ul><ul><ul><li>Unique, mais « mappés » par les syntaxes </li></ul></ul><ul><ul><li>Int vers INT32… </li></ul></ul><ul><li>Value et Object </li></ul><ul><ul><li>Structure et class </li></ul></ul><ul><ul><li>Boxing </li></ul></ul>
    23. 23. C# Primitive Types Valeur <ul><li>Runtime Type C# Type Description System.SByte sbyte Signed 8-bit value System.Byte byte Unsigned 8-bat value System.Int16 short Signed 16-bit value System.UInt16 ushort Unsigned 16-bit value System.Int32 int Signed 32-bit value System.UInt32 uint Unsigned 32-bit value System.Int64 long Signed 64-bit value System.UInt64 ulong Unsigned 64-bit value System.Char char Unicode character System.Single float IEEE 32-bit float System.Double double IEEE 64-bit float System.Boolean bool True/False value System.Decimal decimal 96-bit integer x 100 -> 1028 </li></ul><ul><li>System.Date DateTime Une date </li></ul><ul><li>System.Object object Base of all types System.String string String type (Unicode) </li></ul>Référence
    24. 24. Boxing <ul><li>Boxing / Unboxing </li></ul><ul><ul><li>int value = 123; </li></ul></ul><ul><ul><li>object o = value; // boxing de l'entier dans une boîte d'objet </li></ul></ul><ul><ul><li>int value2 = (int) o; // unboxing dans value2 (int obligatoire) </li></ul></ul><ul><li>Référence </li></ul><ul><ul><li>Employee e = new Employee(&quot;Fred&quot;); </li></ul></ul><ul><ul><li>Employee f = e; </li></ul></ul><ul><ul><li>f.Name = &quot;Barney&quot;; </li></ul></ul><ul><li>Dans un segment de mémoire </li></ul><ul><li>Valeur </li></ul><ul><ul><li>int i = 123; </li></ul></ul><ul><ul><li>int j = i; </li></ul></ul><ul><ul><li>i = 55; </li></ul></ul><ul><li>Dans la pile ou </li></ul><ul><li>en ligne dans un objet </li></ul>
    25. 25. Quiz <ul><li>Question 1 </li></ul><ul><ul><li>int total = 35; </li></ul></ul><ul><ul><li>DateTime date = DateTime.Now; </li></ul></ul><ul><ul><li>string s = String.Format(&quot;Votre total était {0} le {1}&quot;, total, date); </li></ul></ul><ul><ul><li>public static string Format(string, params object[]); </li></ul></ul><ul><li>Question 2 </li></ul><ul><ul><li>Hashtable t = new Hashtable(); </li></ul></ul><ul><ul><li>t.Add(0, &quot;zero&quot;); </li></ul></ul><ul><ul><li>t.Add(1, &quot;un&quot;); </li></ul></ul><ul><ul><li>public virtual void Add(object key,object value); </li></ul></ul><ul><li>Question 3 </li></ul><ul><ul><li>DateTime d = DateTime.Now; </li></ul></ul><ul><ul><li>String s = d.ToString(); </li></ul></ul>
    26. 26. Quiz <ul><li>Scenario 4 </li></ul><ul><ul><li>int[] a = new int[2]; </li></ul></ul><ul><ul><li>a[0] = 33; </li></ul></ul><ul><li>Scenario 5 </li></ul><ul><ul><li>ArrayList a = new ArrayList(); </li></ul></ul><ul><ul><li>a.Add(33); </li></ul></ul><ul><ul><li>public virtual int Add(object value); </li></ul></ul><ul><li>Scenario 6 </li></ul><ul><ul><li>MyStruct s = new MyStruct(15); </li></ul></ul><ul><ul><li>IProcess ip = (IProcess) s; </li></ul></ul><ul><ul><li>ip.Process(); </li></ul></ul>
    27. 27. Unification des concepts Objets Héritage inter langages <ul><li>Framework .NET orienté objet </li></ul><ul><ul><li>La Base Class Library (BCL) est organisée en Namespace </li></ul></ul><ul><li>Plusieurs support de l’ héritage </li></ul><ul><ul><li>Héritage « simple » d’implémentation </li></ul></ul><ul><ul><li>Héritage multiple d’interfaces </li></ul></ul><ul><ul><li>Héritage inter syntaxe </li></ul></ul><ul><ul><li>Héritage « graphique » </li></ul></ul><ul><ul><ul><li>Formulaire, Contrôles </li></ul></ul></ul>
    28. 28. Unification de l’Exception Handling <ul><li>Garantir une gestion d’erreur cohérente et robuste au travers des différentes syntaxes </li></ul><ul><li>Exception handling au niveau de la CLR : Modèle cohérent </li></ul><ul><ul><li>Surcharge des classes d’erreurs </li></ul></ul><ul><ul><li>Propagation inter syntaxe </li></ul></ul><ul><li>Model </li></ul><ul><li>//Intanciation </li></ul><ul><li>try { </li></ul><ul><li>//Traitement à risque sur l'instance </li></ul><ul><li>} </li></ul><ul><li>catch (Exception ex){ </li></ul><ul><li>//Traitement de l'exception </li></ul><ul><li>throw(ex); </li></ul><ul><li>} </li></ul><ul><li>finally { </li></ul><ul><li>//Toujours fait même en cas d'exception </li></ul><ul><li>//Release l'instance (inutile avec le gc) </li></ul><ul><li>} </li></ul>
    29. 29. Unification de l’IDE
    30. 30. Assembly .NET « le retour »
    31. 31. Assemblies .NET <ul><li>Contient MetaData et MSIL </li></ul><ul><ul><li>Format PE, </li></ul></ul><ul><ul><ul><li>Version, configuration,légal… </li></ul></ul></ul><ul><li>Caractérisés par un MANIFEST </li></ul><ul><ul><li>Assembly externes + version </li></ul></ul><ul><ul><li>Description des types + version </li></ul></ul><ul><ul><li>Description des modules </li></ul></ul><ul><li>Peuvent être signées </li></ul><ul><ul><ul><li>Strong Name et GAC </li></ul></ul></ul><ul><ul><ul><li>Sécurité et configuration s’applique sur les assemblies </li></ul></ul></ul><ul><li>Unités de déploiement </li></ul>MZ Header PE Header COFF Header CLR Metadata Executable IL /Machine code
    32. 32. Assembly,module… Metadata for Types X, Y and Z app1.dll Code for Type X Code for Type Y Code for Type Z Namespace A Metadata for Types P and Q app2.exe Code for Type P Code for Type Q Metadata for Type R app3.dll Code for Type R Manifest Manifest Namespace B
    33. 33. Compilation des Assemblies .NET <ul><li>Compilation en deux temps </li></ul><ul><ul><li>Source vers Intermediate Language (MSIL) </li></ul></ul><ul><ul><ul><li>(indépendance syntaxique) </li></ul></ul></ul><ul><ul><li>MSIL vers code natif </li></ul></ul><ul><ul><ul><li>Jit Compilation, (pré JIT possible) </li></ul></ul></ul><ul><ul><ul><li>Compteurs PerfMon associés </li></ul></ul></ul><ul><li>Exécution du code en Binaire (compilé) </li></ul><ul><ul><ul><li>Vrai pour toutes les assemblies ie dll, exe, page ASP.NET WebServices, HttpHandler… </li></ul></ul></ul>
    34. 34. MS Intermediate Language <ul><li>Forme de « super » assembleur, indépendant du hardware… </li></ul><ul><ul><li>Notion de « Pseudo » code </li></ul></ul><ul><li>Contenu dans exe/dll/Module </li></ul><ul><ul><li>Format PE standard (étendu pour les méta data) </li></ul></ul><ul><li>Va être compilé en binaire : </li></ul><ul><ul><li>A l’exécution (Just In Time Compilation) </li></ul></ul><ul><ul><li>Avant déploiement (pré JIT) </li></ul></ul>
    35. 35. Développement DEVELOPMENT C# J# VB Cobol … MSIL Metadata Resources public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable(&quot;USERNAME&quot;); f=new FileStream(“C:est.txt&quot;,FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine(&quot;Exception:&quot;+e.ToString()); } } public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable(&quot;USERNAME&quot;); f=new FileStream(“C:est.txt&quot;,FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine(&quot;Exception:&quot;+e.ToString()); } } Source code Compiler Assembly
    36. 36. Déploiement DEPLOYMENT Setup Copy Browser Compiler Assembly DEVELOPMENT C# J# VB Cobol … MSIL Metadata Resources public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable(&quot;USERNAME&quot;); f=new FileStream(“C:est.txt&quot;,FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine(&quot;Exception:&quot;+e.ToString()); } } public static void Main(String[] args ) { String usr; FileStream f; StreamWriter w; try { usr=Environment.GetEnvironmentVariable(&quot;USERNAME&quot;); f=new FileStream(“C:est.txt&quot;,FileMode.Create); w=new StreamWriter(f); w.WriteLine(usr); w.Close(); } catch (Exception e){ Console.WriteLine(&quot;Exception:&quot;+e.ToString()); } } Source code Application Directory Global Assembly Cache (GAC) Assembly DEVELOPMENT Download Cache Install
    37. 37. Exécution DEPLOYMENT EXECUTION Policy <?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot; ?> <configuration> <mscorlib> <security> <policy> <PolicyLevel version=&quot;1&quot;> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;Nothing&quot; Name=&quot;All_Code&quot; Description=&quot;Code group grants no permissio ns and forms the root of the code group tree.&quot;> <IMembershipCondition clas s=&quot;AllMembershipCondition&quot; version=&quot;1&quot;/> <CodeGroup class=&quot;UnionCodeGroup&quot; version=&quot;1&quot; PermissionSetName=&quot;FullTrust&quot; Debug Engine IL to Native Compiler Application Directory Setup Copy Browser Download Cache Global Assembly Cache (GAC) Assembly on Target Machine Assembly DEVELOPMENT Install Assembly Loader Security Class Loader Native .exe + GC table Code Manager Garbage Collection Exception Manager Thread Support COM Interop
    38. 38. Déploiement <ul><li>Side by Side </li></ul><ul><ul><li>Par simple copie (MSI, .CAB …) </li></ul></ul><ul><ul><li>EXE et DLL dans même répertoire </li></ul></ul><ul><ul><ul><li>Ou sous répertoires : Probing </li></ul></ul></ul><ul><ul><ul><li>/bin pour les sites WEB </li></ul></ul></ul><ul><li>GAC </li></ul><ul><ul><li>Global Assembly Cache </li></ul></ul><ul><ul><li>Signature obligatoire </li></ul></ul><ul><ul><ul><li>Assembly pré JIT </li></ul></ul></ul><ul><li>Download cache </li></ul><ul><ul><li>Contraintes fortes de sécurité </li></ul></ul>
    39. 39. Démo <ul><li>Gestion de version </li></ul><ul><li>Déploiement </li></ul><ul><li>Fini l’enfer des dll dans la base de registre </li></ul>
    40. 40. Interopérabilité COM et COM+ <ul><li>Travailler avec des objets COM </li></ul><ul><li>Interopérabilité dans les 2 sens </li></ul><ul><li>Assembly .Net utilise des objets COM </li></ul><ul><li>Unmanaged Code utilise des Assemblies .NET </li></ul><ul><ul><li>Application COM+ 1.x </li></ul></ul><ul><ul><ul><ul><li>Composants COM et/ou .NET </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Application COM+ </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Transactions, Pooling, Synchronisation </li></ul></ul></ul></ul><ul><ul><ul><ul><li>CLB, JIT… </li></ul></ul></ul></ul><ul><ul><li>Génération des proxy/stub </li></ul></ul><ul><ul><ul><li>Depuis l’IDE VStudio.NET </li></ul></ul></ul><ul><ul><ul><li>En ligne de commande </li></ul></ul></ul><ul><ul><ul><ul><li>TlbImp, TlbExp,Regasm </li></ul></ul></ul></ul>
    41. 41. Interopérabilité API Win32 <ul><ul><li>Déclaration et importation d’une fonction depuis une dll… </li></ul></ul><ul><ul><ul><li>Déclaration de la signature de la fonction </li></ul></ul></ul><ul><ul><ul><li>API Windows </li></ul></ul></ul><ul><ul><ul><li>Toute autre DLL WIN32 </li></ul></ul></ul><ul><ul><li>Dans le source code </li></ul></ul><ul><ul><ul><li>Managed C++ uniquement </li></ul></ul></ul><ul><ul><ul><li># pragma unmanaged </li></ul></ul></ul><ul><li>Travailler avec les DLL Win32/64 </li></ul>
    42. 42. .NET vs COM/DNA <ul><li>Nom de code de la CLR : COM+2.0  </li></ul><ul><ul><li>.NET est une évolution de COM… en profondeur mais sur les mêmes concepts </li></ul></ul><ul><li>Concepts identiques: </li></ul><ul><ul><li>Classes exposants des méthodes… </li></ul></ul><ul><ul><ul><li>Tlb et manifest et metadata en remplacement de la registry </li></ul></ul></ul><ul><ul><li>ClassFactory </li></ul></ul><ul><ul><ul><li>CLR Runtime et class/assembly loader </li></ul></ul></ul><ul><ul><li>Indépendance syntaxique </li></ul></ul><ul><ul><ul><li>Encore plus loin en .NET </li></ul></ul></ul><ul><ul><li>Compatible COM+ </li></ul></ul><ul><ul><ul><li>IObjectControl et ComponentsServices </li></ul></ul></ul><ul><ul><li>DCOM </li></ul></ul><ul><ul><ul><li>Remoting .NET </li></ul></ul></ul><ul><ul><ul><li>Standard sur WebServices et Soap </li></ul></ul></ul>
    43. 43. .NET vs COM/DNA <ul><li>Maintien du modèle (n) tiers </li></ul><ul><li>Couche Présentation </li></ul><ul><ul><li>Windows Form </li></ul></ul><ul><ul><li>WebForm </li></ul></ul><ul><li>Couche Métier </li></ul><ul><ul><li>Assemblies .NET </li></ul></ul><ul><ul><li>Application COM+ </li></ul></ul><ul><ul><li>WebServicesXML </li></ul></ul><ul><li>Couche Données </li></ul><ul><ul><li>ADO.NET </li></ul></ul><ul><ul><li>Data Source standard </li></ul></ul><ul><ul><li>Support XML </li></ul></ul><ul><li>Communication: </li></ul><ul><li>WebService </li></ul><ul><li>Remoting(http,tcp…) </li></ul><ul><li>COM+ (dcom) </li></ul>Mon.exe Browser Internet Intranet XML Windows Form Windows Form Présentation Tiers WebServices Business Tiers Data Tiers Remoting Data Data
    44. 44. .NET Framework Data <ul><li>ADO.NET </li></ul><ul><ul><li>Accès rapide à SQL </li></ul></ul><ul><ul><li>Support native de XML </li></ul></ul><ul><ul><li>Provider en code managé </li></ul></ul><ul><li>System.Xml </li></ul><ul><ul><li>Support XSLT 1.0, XPath 1.0, XSD 1.0, DOM2 </li></ul></ul><ul><ul><li>Architecture extensible </li></ul></ul><ul><li>XSLT/XPath </li></ul><ul><ul><li>Compatible W3C </li></ul></ul>Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services Mobile Devices Windows Forms
    45. 45. ADO et ADO.NET <ul><li>Evolution NOT Révolution </li></ul><ul><ul><li>ADO au cœur du framework .NET </li></ul></ul><ul><ul><li>Accessible facilement aux développeurs ADO </li></ul></ul><ul><ul><li>ADO .NET propose un support optimum au modèle déconnecté </li></ul></ul><ul><ul><li>Support d’XML natif au framework </li></ul></ul>
    46. 46. ADO Architecture : 2 Modes <ul><li>Mode déconnecté </li></ul><ul><ul><li>Dataset qui cache les données sans maintient de la connexion </li></ul></ul><ul><li>Mode Connecté </li></ul><ul><ul><li>Managed Provider </li></ul></ul><ul><ul><li>Accès physique à la base </li></ul></ul>
    47. 47. Data Access Architecture
    48. 48. ADO.NET et XML Correspondance entre ADO et XML Managed Provider DataReader Command Connection Sync Controls, Designers, Code-gen, etc DataSet XmlReader XmlText- Reader XmlNode- Reader XSL/T, X-Path, Validation, etc XmlData- Document DataAdapter
    49. 49. .NET Framework Presentation <ul><li>Windows Forms </li></ul><ul><ul><li>Richest framework for Windows applications </li></ul></ul><ul><ul><li>Visual forms inheritance, automatic layout provide power and flexibility </li></ul></ul>Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services Mobile Devices Windows Forms
    50. 50. Windows Forms <ul><li>Modèle de formulaire unifié pour .NET </li></ul><ul><ul><li>Approche RAD </li></ul></ul><ul><li>Construction visuelle en VStudio.NET </li></ul><ul><ul><li>En fait le code est généré dans le source </li></ul></ul><ul><ul><li>Construction dynamique possible </li></ul></ul><ul><li>Support de l’internationalisation </li></ul><ul><ul><li>Gestion des cultures…au niveau assembly </li></ul></ul><ul><li>Support de l’héritage </li></ul>
    51. 51. Winform : Visual designer
    52. 52. Winform : Héritage <ul><li>Héritage possible entre 2 forms </li></ul><ul><ul><li>Il s’agit de classes .Net …. ;-) </li></ul></ul>
    53. 53. Windows form <ul><li>Démos… </li></ul>
    54. 54. .NET Framework Presentation <ul><li>ASP.NET Web Forms </li></ul><ul><ul><li>Approche composant, </li></ul></ul><ul><ul><li>Page web supportant les événement </li></ul></ul><ul><ul><li>Gestion d’état </li></ul></ul><ul><li>ASP.NET Mobile Internet Toolkit </li></ul><ul><ul><li>Les composants s’adapte au navigateur </li></ul></ul>Common Language Runtime Base Class Library ADO.NET and XML ASP.NET Web Forms Web Services Mobile Devices Windows Forms
    55. 55. Architecture ASP.NET Web Clients IIS ASP.NET Apps Framework.NET Windows Operating System
    56. 56. Évolution des ASP <ul><li>Objectifs: </li></ul><ul><ul><li>Simplifier, structurer le développement </li></ul></ul><ul><ul><li>Indépendance vis à vis des langages </li></ul></ul><ul><ul><li>Séparation du code et de la représentation </li></ul></ul><ul><ul><li>Déploiement simplifié </li></ul></ul><ul><ul><li>Supporter différents types de clients </li></ul></ul><ul><ul><li>S’appuyer sur .NET Framework </li></ul></ul><ul><ul><li>Améliorer la haute disponibilité : « Pages Compilées » </li></ul></ul><ul><ul><li>Assurer la « scalability » dans les « Web Farms » </li></ul></ul>
    57. 57. Les Pages ASP.NET <ul><li>Extension ASPX </li></ul><ul><ul><li>Les pages ne sont pas interprétée mais compilées </li></ul></ul><ul><li>Langages typés : Au choix… </li></ul><ul><li>Séparation code/représentation : « code behind » </li></ul><ul><li>Modèle Objet consistant: </li></ul><ul><ul><li>Page, Objets et éléments HTML sont vus comme des «  Runtime Component Object  » </li></ul></ul><ul><ul><ul><li>Héritage </li></ul></ul></ul><ul><ul><ul><li>Surcharge </li></ul></ul></ul><ul><ul><ul><li>Polymorphisme </li></ul></ul></ul><ul><li>Prêt pour les « Internet Devices » </li></ul><ul><ul><li>PDA </li></ul></ul><ul><ul><li>WEB TV, Consoles… </li></ul></ul>
    58. 58. La compilation à la volé Fichier ASPX Browser Web Réponse Réponse Classe de la page Instanciation, traitement, affichage Classe générée Génère Instancie Analyse moteur ASPX Requête Requête Classe Code Behind
    59. 59. Configuration et Déploiement <ul><li>Simplicité de déploiement: </li></ul><ul><ul><li>Déploiement par simple copie de fichier </li></ul></ul><ul><ul><li>Lock image et non le fichier </li></ul></ul><ul><ul><ul><li>Permet la mise à jour « dynamique » des applications </li></ul></ul></ul><ul><li>Configuration de l’application par : </li></ul><ul><ul><li>Web.config </li></ul></ul><ul><ul><li>Global.asax </li></ul></ul><ul><ul><li>Le répertoire /bin est l’assembly de l’application </li></ul></ul>
    60. 60. Server-Side HTML controls <ul><li>Aucun état sur le serveur : </li></ul><ul><ul><li>data émise/renvoyé dans le formulaire : champ caché </li></ul></ul><ul><ul><li>Mécanisme de PostBack sur la même page </li></ul></ul><ul><li>Control générant un postback : </li></ul><ul><ul><li>Boutons, case à cocher, radio bouton… </li></ul></ul><ul><ul><li>Test IsPostBack() dans le source </li></ul></ul><ul><li>Possibilité de créer de nouveaux contrôles </li></ul><ul><ul><li>Custom control et héritage possible </li></ul></ul><ul><ul><li>User Controls </li></ul></ul>
    61. 61. Server-Side Event Processing <ul><li>Modèle de programmation événementiel </li></ul><ul><ul><li>Déclaration d’un handler, puis implémentation de celui-ci </li></ul></ul><ul><li>Dans la page ASPX </li></ul><ul><li><asp:button id=&quot;b1&quot; OnClick=&quot;b1_OnClick&quot;  text=&quot;PostBack&quot;  runat=&quot;server&quot;/> </li></ul><ul><li>Dans le code behind </li></ul><ul><ul><li>private void b1_OnClick(Object sender, EventArgs e) </li></ul></ul><ul><ul><li>{ </li></ul></ul><ul><ul><li>label1.Text = &quot;Test&quot; ; </li></ul></ul><ul><ul><li>} </li></ul></ul>
    62. 62. Code behind <ul><li>Séparation entre page et code </li></ul><ul><ul><li>La page web hérite d’une classe qui elle même dérivée de Page. </li></ul></ul><ul><ul><li><%@Page Language=&quot;C#&quot; Inherits=&quot;Demo2Code&quot; Src=&quot;Demo2Code.cs&quot; %> </li></ul></ul><ul><ul><li>{…} </li></ul></ul><ul><ul><li>public class Demo2Code : Page </li></ul></ul><ul><ul><li>{…} </li></ul></ul><ul><li>Mapping des noms de contrôles « automatique » (même nom) </li></ul>
    63. 63. Pour développer des ASP.NET Deux scénarios possibles Visual Studio .NET ASP.NET WebMatrix IDE SQL Server MSDE Données IIS “ Cassini” Serveur Web Développement en entreprise Environnement “light” Windows & .NET Framework Windows & .NET Framework Plate-Forme
    64. 64. Webform <ul><li>Démos… </li></ul><ul><ul><li>WebMatrix </li></ul></ul><ul><ul><li>Visual Studio .NET </li></ul></ul>
    65. 65. Un accélérateur de projets Visual Studio .NET ASP.NET WebMatrix IDE SQL Server MSDE Données IIS “ Cassini” Serveur Web ASP.NET Starter Kits Développement en entreprise Environnement “light” Windows & .NET Framework Windows & .NET Framework Plate-Forme
    66. 66. .NET Framework Presentation <ul><li>Web Services </li></ul><ul><ul><li>Silicon surf… </li></ul></ul><ul><ul><li>Vs Carbon surf ;-) </li></ul></ul>Une nouvelle génération d’application… Common Language Runtime Base Class Library ADO.NET and XML Web Services … Windows Forms
    67. 67. Services Web : Définition <ul><li>Définition : </li></ul><ul><ul><li>«  Unité logique applicative  » accessible via les protocoles standard d’Internet </li></ul></ul><ul><li>Pour Don Box : </li></ul><ul><ul><li>« Software that is exposed to other software over Internet-friendly protocols » </li></ul></ul>
    68. 68. Qu’est ce qu’un Service Web? <ul><li>Evolution logique des sites Web et du logiciel </li></ul><ul><ul><li>Accessible par d’autres ordinateurs (pas simplement des utilisateurs) </li></ul></ul><ul><ul><li>Transforme les sites en services réutilisables </li></ul></ul><ul><ul><li>Peut exposer ou réutiliser des services Web </li></ul></ul><ul><li>Méthodologie native d’intégration sur Internet </li></ul><ul><ul><li>Interactions basées sur XML </li></ul></ul><ul><ul><li>Standards ouverts </li></ul></ul><ul><ul><li>Fonctionne avec tout système d’exploitation, modèles de programmation, types de machines ou réseaux </li></ul></ul><ul><ul><li>Peut exposer un système existant comme un Web service </li></ul></ul>
    69. 69. Services Web XML Concepts /Architecture <ul><li>Exposer un Objet = exposer ses Méthodes, Attributs… </li></ul><ul><ul><li>Echanges standards XML via HTTP (SOAP) </li></ul></ul><ul><ul><li>Basé sur les Standards du W3C </li></ul></ul><ul><li>Indépendants des implémentations techniques, syntaxes et OS </li></ul><ul><ul><li>Savoir « parser » du XML </li></ul></ul>
    70. 70. Concepts Annuaire UDDI Client Service Web Enregistrement du service Recherche d’un service Interface WSDL Récupération de l’interface du service Utilisation du service SOAP SOAP HTTP SOAP 1 2 3 4 proxy Développement Production
    71. 71. WebService <ul><li>Approches Microsoft </li></ul><ul><ul><li>Sans .NET </li></ul></ul><ul><ul><ul><li>SOAP Toolkit ( client et serveur) </li></ul></ul></ul><ul><ul><ul><ul><li>Listener pour IIS </li></ul></ul></ul></ul><ul><ul><ul><ul><li>SoapClient </li></ul></ul></ul></ul><ul><ul><li>Avec .NET </li></ul></ul><ul><ul><ul><li>Intégration native au CLR, s’appuie sur IIS </li></ul></ul></ul><ul><ul><ul><li>Intégration « naturelle » dans VStudio.NET </li></ul></ul></ul>
    72. 72. WebServices <ul><li>Démos… </li></ul>
    73. 73. Tablette PC <ul><li>Utilisation des composants Tablette PC </li></ul><ul><li>Démo </li></ul>
    74. 74. Pocket PC <ul><li>Utilisation du Compaq FrameWork </li></ul><ul><li>Démo </li></ul>
    75. 75. © 2001 Microsoft Corporation. All rights reserved.

    ×