Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
Publié parÉloïse Labelle Modifié depuis plus de 8 années
1
Windows NT/2000/XP Enjeux et contraintes techniques Septième partie Présentation de.NET C. Casteyde Document diffusé sous licence GNU FDL
2
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
3
Pourquoi.NET ? ● L'API Windows est riche mais hétéroclite : – base Win32, GDI, – OLE/COM, – scripting, Visual Basic, – XML, Web. ● Un empilement de bibliothèques et de technologies
4
Pourquoi.NET ? ● De nombreuses difficultés pour les programmeurs (pointeurs, gestion de la mémoire) ● Types de données hétéroclites : – chaînes : LPCSTR, LPWSTR, BSTR, – temps : FILETIME, SYSTEMTIME, DOSTIME, time_t, struct tm, DATE, en UTC ou local. ● Des encapsulations qui multiplient la complexité : – chaînes : CString (Unicode ou ASCII), CComBSTR, bstr_t, – temps : CTime, COleDateTime. ● Des fonctions éparpillées et / ou redondantes
5
Visual Basic vieillissant ● VB6 a été très utilisé dans le monde (RAD) ● Il est à la base des scripts ASP ● Mais il est dépassé : – monothreadé, – typage faible, – syntaxe laxiste, – fonctionnellement limité (APIs inaccessibles).
6
Émergence des services Web ● Microsoft devait apporter une solution pour contrer Java ● Besoin d'intégration au niveau des technologies serveur ● Développement d'applications Web Intranet / sites commerciaux
7
Les objectifs ● Fournir une plate-forme de développement unifiée ● Être indépendant des langages ● Fournir une API complète et cohérente ● Faciliter la vie des développeurs de tous bords ● Fournir une technologie Web cohérente ● Intégrer les dernières avancées technologiques ● Être compatible avec l'existant
8
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
9
Architecture générale ● Technologie de compilation de code intermédiaire ● Utilisation d'un langage intermédiaire (« IL ») ● Interprétation et compilation à la volée (« Common Language Runtime ») ● Basée sur une bibliothèque complète et commune aux différents langages («.NET Framework ») ● Passerelles d'interopérabilité avec les anciennes bibliothèques
10
Schéma architecture if (i<j) System... Intermediate Language Code natif i = 2 If i = j Then... JIT csc vbc.NET Framework Windows API Common Language Runtime Interop
11
Machine virtuelle ● La CLR charge et exécute l'IL ● Compile à la volée si nécessaire ● Fournit un garbage collector performant ● Fournit les fonctions de base d'interopérabilité ● Isole les applications ● Isole les domaines d'application (« Application Domains »)
12
Code managé ou non managé ●.NET distingue deux types d'objets : – les objets managés (objets.NET), – les objets non managés (natifs). ● Les objets managés bénéficient : – du garbage collector, – des extensions.NET aux langages. ● Visual C++ permet de faire du C++ managé ou du C++ « standard »
13
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
14
Le garbage collector ● Le garbage collector de la CLR est : – performant, – complexe mais documenté, – contrôlable applicativement. ● Il sait traiter les références circulaires ● Le revers de la médaille : – il n'est disponible que pour le code managé, – difficultés pour contrôler la destruction des objets, – performances des programmes très variables.
15
Algorithme du garbage collector ● Le GC ne se déclenche que lorsque tous les threads sont dans un état stable ● Il maintient une liste d'objets directement accessibles par le programme ● Il parcours cette liste et construit récursivement l'arbre des objets accessibles ● Les autres objets sont déclarés « détritus »
16
Algorithme du garbage collector ● Les objets inaccessibles sont détruits ● Le tas est compacté : – les objets sont déplacés en mémoire, – toutes les références du programme sont mises à jour. ● À des fins d'optimisations, le garbage collector utilise la notion de génération : – les objets les plus récents sont parcourus en premier, – les objets qui résistent à une passe sont de plus vieille génération.
17
Schéma du Garbage Collector Garbage a b Accessibles A a; Long f() { A b=new A }
18
Gestion des destructeurs ● Les objets qui doivent libérer des ressources implémentent la méthode Finalize ● Ils sont replacés dans une liste d'objets « f-reachable » par le garbage collector ● Ils sont « finalisés » sur un thread séparé ● Ils redeviennent inaccessibles après finalisation ● On ne maîtrise toujours pas la libération des ressources externes (objets COM,...)
19
Destruction explicite ● Pour contrôler explicitement la durée de vie des objets, il faut : – implémenter la méthode Dispose de IDisposable, – appeler cette méthode applicativement. ● La boucle est bouclée : – un oubli revient à un ressource leak classique (mais temporaire), – il est souvent nécessaire d'utiliser un compte de références en cas d'objets partagés.
20
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
21
La bibliothèque.NET ● Le « Framework.NET » couvre presque toute l'API ● L'encapsulation fournie est hiérarchique ● Chaque groupe fonctionnel est dans un espace de nommage (« Namespace ») ● La racine est le namespace « System » ● La bibliothèque est extensible par import de code non managé
22
Les namespaces.NET System Text ServiceProcess Security Threading Trace Net IO Resources Diagnostics Configuration Collections Globalization Runtime Reflection Graphics
23
Fonctionnalités de base ● System contient l'objet Console permettant de faire les entrées / sorties en ligne de commande ● Diagnostics contient l'objet Trace qui permet d'envoyer des messages au débogueur ● IO contient les objets nécessaires aux entrées / sorties sur fichiers ● Graphics contient les objets nécessaires pour la réalisation d'application graphiques
24
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
25
Architecture Web ● IIS sait traiter des scripts ASP.NET ● Les pages ASP.Net peuvent contenir des scripts inlinés ou seulement référencés ● Elles sont compilées une seule fois ● Le code est invoqué pour générer le code HTML ● Un cache de sortie peut être utilisé pour optimiser
26
Schéma Web IIS Script.NET Navigateur Client Web http://... Cache de page Page ASP Objet.NET Objet.InnerHTML =... Runtime.Net
27
Pages ASP.NET ● Un en-tête permet de déclarer la page et les modules utilisés ● Le code de traitement des événements de la page est écrit dans un script ● Le script génère le contenu HTML des objets de la page ● Le code HTML référence ces objets
28
Exemple de page ASP.NET void Page_Load(Object sender, EventArgs, EvArgs) { MonObjet.InnerHtml = "Coucou !" }
29
Les domaines d'application ● Une même application peut définir des domaines d'application ● Les objets d'un domaine ne peuvent accéder aux autres domaines ● Isolation des services vis-à-vis des bogues ● Utilisé par ASP.NET pour séparer les clients
30
Schéma domaines d'application IIS Service Web Application Domain 1 Application Domain 2
31
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
32
Le langage C# ● Étymologiquement, c'est C++ ++ ● C'est une copie de Java à la sauce Microsoft ● Complètement orienté objet ● Pas de préprocesseur ● Utilisation intensive d'attributs (méta code)
33
La syntaxe de C# ● Le C# utilise la même syntaxe que C++ et Java ● Il prend en compte la casse des caractères ● Comme en Java, le point d'entrée est la méthode statique « Main » de la classe de l'application ● La directive « using » permet de simplifier l'accès aux fonctionnalités des namespaces
34
Hello World // Introduit les fonctionnalités de System : using System; // Classe de l'application : class MonApp { // Fonction principale : public static void Main() { // Équivalent de System.Console.WriteLine : Console.WriteLine("Hello World!"); }
35
Plan ● Les objectifs de.NET ● Architecture ● Gestion des ressources ● La bibliothèque ● Fonctionnalités Web ● Présentation du langage C# ● Conclusion
36
Les objectifs atteints ● En résumé,.NET c'est : – le regroupement de toutes les technologies Windows, – une uniformisation de l'API Windows, – une hiérarchisation des fonctionnalités, – une refonte complète de VB (multithread, objet, API), – un nouveau langage (C#), – un environnement de développement (Visual Studio), – une intégration à IIS.
37
Les avantages de.NET ● C'est un RAD efficace et puissant ● Il fournit une API uniforme et cohérente ● Facile à programmer ● Relativement performant ● Sécurité mémoire assurée (garbage collector, isolation des applications, machine virtuelle) ● Forte orientation Web
38
Les inconvénients ● Remise à zéro des compteurs : – pratique du langage à acquérir, – bibliothèque à ré-apprendre. ● Perte de tous les programmes VB : – nécessité de recoder 50% en moyenne. ● Non portable et propriétaire – sécurité des données, – pérennité des programmes (ex VB). ● Inadapté à certains projets (performances)
39
Le choix.NET ● Choisir.NET impose donc : – formation des anciens développeurs, – engagement fort envers Microsoft (alternative : Mono). ● Environnement de prédilection pour : – sites Web, – applications graphiques simples, – maquettage. ● Pour les autres applications, il faut évaluer les inconvénients (temps réel, performance...)
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.