1 / 48

.NET & C#

.NET & C#. Sandra CHAVES Sylvain CUAZ DESS GI SRR 2002-2003 IMA - Université Grenoble 1. Plan. Origine de .NET .NET Le langage C# Les alternatives Conclusion. Origine de .NET. 1995 : Microsoft se tourne vers le net

denali
Télécharger la présentation

.NET & C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. .NET & C# Sandra CHAVESSylvain CUAZ DESS GI SRR 2002-2003 IMA - Université Grenoble 1

  2. Plan • Origine de .NET • .NET • Le langage C# • Les alternatives • Conclusion .NET & C#

  3. Origine de .NET • 1995 : Microsoft se tourne vers le net • gros compromis pour vite produire des outils et technologies basés sur l’Internet • tentative de ramener un peu d’ordre avec le concept DNA .NET & C#

  4. DNA • 3 niveaux • Active Server Pages pour la présentation, • Objets métiers en COM au milieu, • Une base de donnée pour le bas. • Concept sain, mais difficile à mettre en oeuvre • D’autres plateformes offrait de bien meilleures solutions (Unix, J2EE) • essentiel pour Microsoft de résoudre les limitations de DNA .NET & C#

  5. Le remplaçant • 1998 : début de Next Generation Windows Services (NGWS). • Développement confidentiel • NGWS rebaptisé .NET le 22 Juin 2000 .NET & C#

  6. .NET : une plateforme logicielle • Description • Le framework .NET & C#

  7. Description • Plateforme logicielle : programmes ne cible pas une combinaison matériel/OS mais .NET • => marcheront partout où est implémenté .NET • environnement indépendant d'un langage • But : écrire des programmes qui interopère facilement et de façon sécurisé. .NET & C#

  8. Description • .NET nom collectif pour des logiciels variés qui sont construit sur la plateforme .NET • produits : Visual Studio.NET, Windows.NET Server, … • services : Passport, HailStorm, … • Les composants qui constituent .NET-la-platforme sont appelés le Framework .NET. .NET & C#

  9. .NET Framework • 2 parties principales: • 1. La CLR (Common Language Runtime) • 2. Un ensemble hièrarchique de bibliothéques de classes .NET & C#

  10. La CLR • Le “moteur d’exécution” de .NET • Les caractéristiques : • Conversion IL -> code natif • Gestion Mémoire (garbage collection) • Vérifie et applique la sécurité • Charge et exécute les programmes .NET & C#

  11. Intermediate Language • Indépendant du CPU • Indépendant du langage • => chaque langage choisi un sous-ensemble • Code accessible depuis d’autres langages • => respect de la Common Language Specification (CLS) compilation Exécution par la CLR Code source IL .NET & C#

  12. Managed Code • code qui cible .NET • contient des informations supplémentaires (metadonnées) pour se décrire • => CLR peut garantir la sécurité, l’interopérabilité… .NET & C#

  13. Common Type System • sert à décrire les types indépendamment du langage => • type-fidelity : permet à des types d'un langage d'interagir avec des types d'un autre langage • type-safety : garanti que le code n'accède pas à des zone mémoires interdites .NET & C#

  14. Unmanaged Code • .NET peut utiliser du code sans métadonnées : • non « géré » • peut utiliser la bibliothéque de .NET • peut compiler en IL • ne peut bénéficier du GC • natif • pour de meilleures performances • par exemple WinForms .NET & C#

  15. Assemblies • Briques des programmes .NET • unité fonctionnelle atomique • Collection de code et de métadonnées • Contient un Manifest, qui décrit • son nom • sa version • la liste des fichiers • les dépendances • les fonctions fournies… .NET & C#

  16. Module • Code compilé sans Manifest • Sert à modularisé le développement .NET & C#

  17. JIT • La CLR utilise la compilation Just-In-Time • Chaque méthode appelée est compilée en code natif • appels suivants n’ont pas à être recompilés • Qq problèmes : exige des resources • mémoire • processeur .NET & C#

  18. JIT • 2 compileurs JIT: • un normal : optimise pas mal, mais intensif au niveau de la mémoire et du processeur • un "EconoJIT” : optimise pas aussi bien, mais requiert moins de ressources • Promesse d’un 3eme : un compileur pre-JIT • = un compileur normal ! • Le seul plus : compile à l’installation => pas besoin de distribuer du code spécifique pour chaque plateforme .NET & C#

  19. Attributes • Façon flexible et extensible de modifier l’environnement à la compilation ou à l’exécution • Marquer une fonction comme étant obsolète => warning à la compilation • Attacher un auteur à chaque bout de code => on interroge ces attributs à l’exécution .NET & C#

  20. La bibliothéque de Classes • Namespace : ensemble de classes • La racine des namespaces est System • Contient les types basiques comme Byte, Double, Boolean, and String, Object… • Tous les objets dérivent de System.Object • value types ≠ objets • Moyens efficace de convertir des value types en objets .NET & C#

  21. Côté client • L’ensemble des classes est assez complet : • Collections • File • Screen • network I/O • Threading • XML • Connection aux bases de données… • Windows Forms alternative au développement traditionnel pour Windows .NET & C#

  22. Côté serveur • Web Services : composant sur un serveur web utilisé par : • Une application • Un autre Web Service .NET & C#

  23. Web Services • SOAP (Simple Object Access Protocol) • RPC qui utilise XML sur HTTP • WSDL (Web Service Description Language) • décrit la structure des messages • UDDI (Universal Description, Discovery and Integration) • annuaire global des services web .NET & C#

  24. Annuaire UDDI Recherche service d’info sur WallStreet WSDL Je fournis des services d’info sur WallStreet WSDL AppA SOAP Web Services WSDL WebServiceA WSDL .NET & C#

  25. Plan • Présentation générale de C# • Syntaxe du langage • Les plus de C# .NET & C#

  26. I. Présentation générale • Nouveau langage de Microsoft • Langage orienté objet • Ressemble à C++ • Utilise les classes définies dans .NET • Pas une partie de .NET, langage comme un autre • Permet d’utiliser les concepts de .NET proprement .NET & C#

  27. II. Syntaxe du langage • Définition d’une classe • Définition d’une méthode • Principales instructions • Types valeur et référence .NET & C#

  28. Définition d’une classe namespace namespaceName { using Namespace(s); [access] [sealed | abstract] class NomClasse [: Classe, Interface(s)] { [définition de la classe] } } • Accessibilité à la classe public private protected internal protected internal .NET & C#

  29. Définition d’une méthode • Une méthode [access] [new] [static] [abstract] [sealed] [extern] [virtual | override] [TypeRetour | void] NomMethode ([TypeParam param]) [: base ([param])] { [corps de la méthode] } • La méthode Main public static [int | void] Main([String[] args]){ [corps de la méthode] } .NET & C#

  30. public class Parent{ public void DoStuff(string str) { Console.WriteLine("In Parent.DoStuff: "); } } public class Child: Parent { public void DoStuff(string str) { Console.WriteLine("In Child.DoStuff: "); } } public class VirtualTest { public static void Main(string[] args) { Child ch = new Child(); ch.DoStuff("Test"); ((Parent) ch).DoStuff("Second Test"); } } .NET & C#

  31. Méthode m(), liste arguments A, une instance I dont type à la compilation est C et le type àl’exécution est R (R = C ou sous classe de C) • lors de l’appel de méthode m() sur I • Recherche méthode dans C (peut être héritée) • Si la méthode de C non virtuelle, on l’appelle • Si la méthode de C virtuelle, on recherche méthode de même signature la plus dérivée que R peut appeler .NET & C#

  32. Principales instructions • if • while • do • for • switch • Foreach foreach (typeObj identifiant in collectionObj) action; .NET & C#

  33. Types valeur et référence • Type référence • créé sur le « tas » (grâce à new) • libéré par le ramasse miettes • Type valeur • créé sur la pile • supprimé au retour d’un appel de méthode • pas sous la responsabilité du ramasse miettes • Déclaration : mot-clé struct (au lieu de classe) .NET & C#

  34. III. Les plus de C# • Structures • Le boxing/unboxing • Les properties • Les attributs • Les indexeurs • Les délégués • Pointeur et code non protégé: unsafe code • Le versionning .NET & C#

  35. Structs • Mot-clé struct • Objets de type valeur • Déclaration des mêmes types de membres qu’une classe possible • Pas d’héritage possible • Peut implémenter des interfaces • La visibilité par défaut = protected .NET & C#

  36. Le boxing / unboxing • Conversion type valeur <-> type référence • Boxing (type valeur -> type référence) : une instance de type objet allouée et la valeur copiée dans cet objet • Unboxing (type référence -> type valeur) : . Vérifie que le type de la valeur de l’instance et le type du type valeur voulu correspondent . sort la valeur de l’instance • ex : object box = 123; int i = (int)box; .NET & C#

  37. Les properties • extension des champs (objet.prop) • Ne définit pas d’emplacement mémoire • Définit des accesseurs décrivant instructions à exécuter • propriétés en lecture, écriture ou lecture/écriture • public class User { private string name; public string Name{ set { name = value; } // ecriture } } .NET & C#

  38. Les attributs • un moyen d'insérer des annotations (i.e méta-données) • Ex: [Serializable]: Similaire à l'implémentation de l'interface java.io.Serializable de Java. • Peut créer ses propres attributs en sous-classant System.Attribute .NET & C#

  39. [AttributeUsage(AttributeTargets.All)] public class HelpAttribute: Attribute { private string url; public HelpAttribute(string url) { this.url = url; } } [Help("http://www.mycompany.com/.../Class1.htm")] public class Class1 { public void F() {} } class Test { static void Main() { Type type = typeof(Class1); object[] arr = type.GetCustomAttributes(typeof(HelpAttribute), false); HelpAttribute ha = (HelpAttribute) arr[0]; Console.WriteLine("Url = {0}", ha.Url); } } .NET & C#

  40. Les indexers • Permet à un objet d’être indexé • Exemple : peut accèder aux éléments d’une pile sans dépiler les éléments • déclaration similaire à la déclaration d’une property • différences : . nom de la propriété est « this » . Paramêtre représentant l’indexe • ex : public object this[int index] { get { … } set { … } } .NET & C#

  41. Les délégués • proche des pointeurs de fonction en C ou C++ • Encapsule 1 methode ou plus : «callable entity» • Pour methode d’instance, callable entity = 1 instance et la méthode à appliquer sur l’instance • Pour methode statique, callable entity = la methode • L’appel à la méthode = appel au délégué auquel on fournit les bons paramêtres • Déclaration, instanciation, appel: • delegate [type | void] delegateName ([type param]*); • delegateName d = new delegateName (nomFonction); • D(param); .NET & C#

  42. Unsafe code • déclare des pointeurs (noté type*) • void* = pointeur vers un type inconnu • Du code « unsafe » doit être marqué avec le mot-clé « unsafe » • Pointeurs ne sont pas gérés par le GC • un pointeur peut être null • opérateurs • & adresse d’une variable • * déréférencement • [] indexe un pointeur • ==, !=, <, >, <= et => pour comparer des pointeurs .NET & C#

  43. Le versionning • possibilité d'exécuter plusieurs versions différentes d'une même classe • les programmes C# référencent statiquement des bibliothèques de classes à l'aide de leur nom mais aussi de leur version • Une nouvelle version est • source compatible : si du code qui en dépend doit être recompilé pour marcher • binary compatible : si du code qui en dépend marche sans rien avoir à faire .NET & C#

  44. Les alternatives • J2EE (JOnAS, JBoss) • Mono (Ximian) • Compilateur C# • CLR • Bibliothéques • Très actif • DotGnu (FSF) • Remplaçant complet de .NET • Fonctionalités de HailStorm • Pas très actif .NET & C#

  45. Microsoft .NET vs. J2EE • Offrent les mêmes fonctionnalités • Seule ≠ de .NET : indépendant du langage • + : paradis pour dévelopeur • - : enfer pour chef de projet • La barrière Java est vite franchie .NET & C#

  46. Conclusion • Microsoft se vante de la portabilité et de l’ouverture mais : • Si app accède à des services natifs « pour la performance » alors réduit à une app Windows • Exemple : WinForms • Peut faires des extensions propriètaires • cf J++, HTML, WMP plug-in, … .NET & C#

  47. Références • http://arstechnica.com/paedia/n/net/net-1.html • http://www.osnews.com/topic.php?icon=36 • http://www-adele.imag.fr/~donsez/cours/ • http://microsoft.com/net • http://www.linuxdevices.com/files/misc/prasad-28oct01.html .NET & C#

  48. Références • http://www.dotnetguru.org/article.php?sid=18 • http://tutorials.beginners.co.uk/index/category/87 • http://www.jaggersoft.com/csharp_standard/ • http://www.go-mono.com/ • http://dotgnu.org/ .NET & C#

More Related