& Langage Intermédiaire du Web (C#) Microsoft .NET & Langage Intermédiaire du Web (C#) Nguyen Tuan Loc 10/04 ™
Contenu 1) Microsoft.NET 2) C# et C++ 3) Perspective & conclusion .NET et Framework.NET .NET et les langages supportés Mécanisme de fonctionnement de .NET Installation .NET 2) C# et C++ Présentation C# Comment ça marche C# ? Pourquoi choisir C# ? Comparaison entre C# et C++ Avantages Similaire Inconvénients 3) Perspective & conclusion
Présentation .NET & .NET Framework Microsoft propose 4 langages C#, C++,VB.NET,ASP.NET dont C# est le premier recommandé par Microsoft Autres langages supportés Perl, Cobol, Eiffel, J#, Oberon,Component Pascal, Python, Smalltalk
.NET & CLR Common Language Runtime
Architectures intelligentes Microsoft Framework.NET souris MSIL chat .cs chien MSIL chien .pl deployment Windows JIT Linux (?) .vb Exemple : CLR Intelligence : -Intégration, -Réutilisation, -Interopérabilité. 1,5’(12) Surcouche de l’OS Windows, J2EE de Sun -le code .NET est compilé en deux étapes : il est d’abord converti en langage intermédiaire, MSIL, puis le compilateur JIT (Just-In-Time) utilise ces instructions MSIL pour le convertir en langage natif qui est ensuite exécuté par le CLR. On peut très bien mélanger et faire des classes en différents langages supportés par .NET et faire exécuter ensemble dans le même projet. -logique de services et traitement de services. Cette séparation permet le développement de nouveaux services sans être obligé de modifier et de mettre à jour les codes dans ces systèmes de plus en plus complexes. -CLR un moteur d’exécution pour assembler les codes en MSIL et les codes natifs du système pour les convertir en code exécutable selon le type de l’OS, ce travail est fait via un compilateur JIT. 7/32 MSIL : Langage Intermédiaire de Microsoft CLR : Common Runtime Language JIT : Machine virtuelle de Microsoft
Mécanisme de fonctionnement de MS.NET CLR : Common Language Runtime JIT : Just in Time (2eme compilateur) Mécanisme de fonctionnement de MS.NET chien .vb souris .pl chat .cs chien MSIL chat MSIL souris MSIL CLR : moteur exécution en langage commun déploiement Windows JIT Linux (?) JIT
Assemblage de composants J J c C VB Bonne conception ? Nombre de composants Prix de composants Prix d’interfaces Prix Prix minimum 1,5’(10,5) 1.fonctionnelle,monolithique,pas d’interfaces 2.OO:WRAP monolithique, interface 3.COO: orienté composant, interfaces Réutilisation : éviter la re-invention de la roue, flexibilité, adaptabilité. Indépendance avec l’évolution de l’application, Assemblage de composant: plug-and-play. Complexité du système d’information, comment trouver un prix minimum pour le concept d’assemblage de composant. Plus on décompose un système en plusieurs composants, plus on a le coût des interfaces à résoudre. Il faut donc trouver un bon design pour le système d’information pour que le prix soit minimum. C’est un des objectifs que nous essayons de proposer dans le chapitre de contribution.
Résumé Architectures intelligentes de .NET : Rapidité, qualité : l’intelligence se trouve dans la logique de services, pas dans le traitement de services. Ouvertes dans un monde « fermé » : l’implémentation propriétaire (.Net sur Linux?).
Installation Microsoft.NET Que faut-il avoir pour une application .NET tourne ? Windows OS (XP n’a pas besoin) Windows 2000 recommandé ou Microsoft .NET SDK (30 mb) http://msdn.microsoft.com/netframework Editeur de texte (notepad) ou Visual Studio.NET (option) (10 licences déjà dans l’équipe TDD, 3 utilisées) La production avec Perl : Visual Perl de ActiveState (partenaire .Net de Microsoft) (495 $) (option)
Qu’est-ce c’est C# ? Langage proposé par Microsoft, standardisé par ECMA, ressemble la syntaxe de Java Langage orienté objet Une partie évolue vers langage orienté et langage de programmation de component Dérivé de C++ MFC est remplacée par librairie .NET Framework Combinaison entre la force de C++ et la simplicité de Visual Basic Cross Plate-forme Cross Langage
C# : comment ça marche ? C# ‘.exe’ Code .cs ‘.dll’ natif (selon OS) Just in Time Compiler .cs ‘.exe’ ‘.dll’ Code natif (selon OS) JIT Code source Microsoft Intermediate Language (MSIL) CLS ‘Règle de tranformation en .NET’ CLR Common Runtime Language
C# versus C++ Pourquoi choisir C# ? Avantages C# Plus ouvert Interopérabilité dans le futur avec Framework .Net (Windows, »Linux,Unix ») Supporter XML (standard de l’Internet W3c) Composant.Net (complexité, time to market, plug and play) Inconvénients C# Apprendre nouveau concept de base (.Net) Apprendre nouveau langage (temps d’estimation environ 4 semaine)
Avantages C# Peu de pointeur Conversion automatique (boxing) list.Add(1); list.Add(13.12); Versioning C# demande le développer de clarifier la création de la version librairie créée. Utilise le keyword ‘new’ et ‘override Utiliser la librairie de framework .NET Threading, Collection, XML, ADO+, ASP+, GDI+ & WinForms libraries
Avantages C# C# élimine header .h C# non pointeur (très limité). C# est un langage objet orienté pur avec tous les objets et types dérivés de la classe Object. Codé géré (pas besoin de ‘’free’’ et ‘’delete’’) -> plus de paniques MFC(CString, string) en COM,VB(_bstr, BSTR) !-> classe Systeme CLR remplacée. Plus détails : http://msdn.microsoft.com/library/default.asp?url=/library/enus/cscon/html/vclrfcomparisonbetweenccsharp.asp
Similaire C++ et C# Keywords similaires (dérive de C++) Classe hiérarchie par arbre avec un Root Machine virtuelle & IL/CLR Garbage Collection Pas de méthode globale Pas d’inhérence Multiple
Inconvénients de C# Technologie Windows 100%, porter Framework sur Linux “à voir” (projet Mono) .NET et C# sont des "standards ouverts" ne signifie pas nécessairement des "environnements ouverts". (IBM-ZDNet) La première fois est lente (à cause de compilateur 2-time) Les tests du produit non extensifs (large utilisé par communauté des utilisateurs) Trop nouveau, vient d’être soumis et accepté par ECMA
.NET et perspective Et Pourquoi ? Orienté vers l’évolution de l’Internet et les Web Services Perspective : .NET est une architecture ouverte Et Pourquoi ?
XML, C# et .NET : Source Microsoft DevDay 2003
Evolution Web Services Win.NET, 200x Internet 1997 Windows 1990 .NET,C# Web Services Win.NET, 200x Evolution Visual Studio 6 Internet 1997 Windows 1990 Visual Tools PC 1981 Quick Languages Basic Interpreter Micro computer 1975
C# et .NET: orientation to the Internet evolution Person to person (C2C) Data echange PC Architecture 1-tiers Evolution de l’architecture Application to person (B2C) Web server Web browser HTTP/HTML Architecture 2-tiers Architecture 2-tiers Web browser Application to person (B2C) HTTP/HTML Web server Databases Application to application (B2B) Web services XML/SOAP Architecture “n-tiers”
.NET et perspective Boîte blanche Boîte noire Utiliser le code monolithique dans programme Boîte noire Assembler les codes compilés dans un programme Boîte grise (.NET et autres langages) Entre boîte noir et boîte noir plus interface de wrapping
.NET conclusion Solution pour résoudre 3 problèmes de base: Intégration Réutilisation Interopérabilité Supporter SOAP, XML -> Nouveau standard de l’industrie
C# conclusion C# = Power C++ + Simplicity Visual Basic + Interoperability Java C# = Langage ouvert et du futur
Références NET Framework SDK (includes C# compiler) http://msdn.microsoft.com/netframework http://www.gotdotnet.com ECMA C# Standard http://www.ecma.ch/ecma1/stand/ecma-334.htm Microsoft Visual C# .NET http://msdn.microsoft.com/vcsharp http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cscon/html/vcoricstartpage.asp http://www.csharphelp.com/ http://msdn.microsoft.com/msdnmag/issues/01/07/ctocsharp/ctocsharp.asp http://windows.oreilly.com/news/hejlsberg_0800.html http://msdn.microsoft.com/msdnmag/issues/0900/csharp/default.aspx Microsost.NET, C#, groupes françaises : http://www.dotnet-fr.org http://www.c2i.fr