C'est quoi .NET ?
".NET is the Microsoft Web services strategy to connect
information, people, systems, and devices through software."
Introduction à .NET [Link]
"The .NET Framework is a development and execution
environment that allows different programming languages &
Clémentine Nebut libraries to work together seamlessly to create Windows
LIRMM / Université de Montpellier 2 based applications that are easier to build, manage, deploy,
and integrate with other networked systems."
[Link]
Intro .net Archi .net Langages CLR BCL Conclu
C'est quoi .NET ? .NET 1, 2, 3
• La réponse de Microsoft à J2EE … • .net 1.0
– avril 2003
• Une plateforme multilangages • .net 2
• Un ensemble de classes de bibliothèque – 2. 0 : janvier 2006
• Des facilités : • .net 3.0 : WCF, WPF, WF, Cardspace
– pour créer et utiliser des services web – 3.0 : novembre 2006
– et globalement pour la création d'applis ntiers – 3.5 beta 2 : août 2007
• Un langage dédié : C#
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Plan du cours L'architecture .NET 2.0
• C'est quoi .NET ?
• L'architecture .NET [Link] C++ Eiffel C# ...
• Les langages .NET
Common Language Specification (CLS)
• Le Common Language Runtime (CLR) Web services Web forms Windows forms
• Les bibliothèques de base Data and XML classes
• Les outils Base Class Library (BCL)
Common Language Runtime (CLR)
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
.NET : pour quelles applications ? Les langages .NET
• Conçu pour faciliter le développement • Le langage "dédié" : C#
d'applications ntiers – proche de java
– utilisation/création facile de services web • Les classiques
– accès facile aux données ([Link]) – [Link], C++, J#, Eiffel#
– présentation par pages web dynamiques ([Link]) • Mais aussi :
– ADA, Scheme, Python, Fortran, …
• En tout une vingtaine de langages supportés
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Langage .NET et MSIL Compilation
• Un langage .NET [Link] C++ Eiffel C# ...
– est compilé vers du MSIL
– est conforme à la CLS
Compilation classique
• MSIL = CIL
= Microsoft Intermediate Language CIL
= Common Intermediate Language Compilation Just In Time
≈ Byte code Java
interprété par un moteur d'exécution (machine virtuelle)
Code machine natif
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Compilation Just In Time Common Language Specification
• Contient la spécification des langages .net
Programme en MSIL
• Entre autres :
– le système de types
Compilateur JIT du code MSIL – un ensemble de règles
• règle 7 : "The underlying type of an enum shall be a built
Appel d'une méthode in CLS integer type."
Code natif administré non compilée • règle 25 : "The accessibility of a property and of its
accessors shall be identical."
Exécution du code – ...
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Managed / unmanaged code Le statut à part de C++ :
• Managed code • Il y a le managed C++ et le unmanaged C++ …
– code écrit pour le CLR • Le managed C++ est une extension au C++ pour
– code "géré" par le CLR : ramassemiettes, politique de satisfaire les CLS
sécurité, vérification du typage à l'exécution, … • Cohabitation possible entre du C++ managed et
• Unmanaged code du C++ unmanaged (spécificité C++)
– code non géré par le CLR – réutilisation de C++ existant
– exécution plus rapide – performances
• Le managed C++ a évolué en C++/CLI en 2005
– syntaxe + agréable, meilleure intégration au CLI
(Common Language Infrastructure), + proche de C++
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Common Language Runtime Composants principaux du CLR
Prise en charge de la bibliothèque de classes de base • Système de type
• Système de métadonnées
Prise en charge multithread Marshaleur COM
• Système d'exécution
Vérificateur de type Gestionnaire d'exceptions
Moteur de sécurité Moteur de débogage
Compilateur MSIL Gestionnaire Ramasse
en code natif de code miettes
Chargeur de classes
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Le système de types BuiltIn Types
• 2 soussystèmes : • Bool
– types "valeur" (value types) • Char (16bit unicode)
• de base ou construits par le programmeur
• Entiers signés et non signés, sur 8, 16, 32 et 64
– types "référence" (reference type)
bits
• objet
– Tous les objets héritent de la classe object • Flottants sur 32 et 64 bits
– Méthodes : equals, finalize, getHashCode, getType,
memberwiseClone, ToString
• Object
• interfaces • String
• pointeurs
• Flottants et entiers dépendant de la machine
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Les métadonnées Assemblies et Manifests
• Pour stocker des informations sur les • Assembly
composants – un manifeste
• Les compilateurs stockent des infos sur les types – des classes de n'importe quel langage placées dans un
– pour l'interopérabilité espace de nom
– pour le moteur d'exécution (gestion mémoire par – des métadonnées (images, textes, vidéos, …)
exemple) – créé par [Link]
• Extension des métadonnées possible • Manifeste
– informations de nom et de version
– liste des types et l'endroit où ils sont dans l'assembly
– informations de dépendance
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Système d'exécution La bibliothèque de classes
• Chargement et vérification de code • Commune pour tous les langages
• Gestion des exceptions • [Link], VisualBasic, JScript
• Compilation JIT – classes pour supporter la compilation et la génération
de code dans différents langages
• Gestion mémoire
• [Link]
• Sécurité
– pour l'intégration de scripts dans les applications
• Microsoft.Win32
– classes pour gérer les exceptions systèmes et pour
manipuler les registres du système
• System
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
L'espace de noms System .net 3.0 (winFX)
[Link] [Link]
Services UI Design ComponentModel
Description HtmlControls
Discovery WebControls
Protocols [Link]
Caching Security Drawing2D Printing
Configuration SessionState Imaging Text
•Approche unifiée UI,
[Link] [Link] documents, animations
•Moteur de composition •Unification basée basée •Unification basée
ADO SQL XSLT Serialization basé sur des vecteurs •Gestion services des moyens de services des moyens de
Design SQLTypes XPath Reader/Writers intégrés des communication communication
•Modèle de prog identités •remoting, WS, (remoting, WS,
déclarative Xaml COM+, ... COM+, …)
System •Facilités de
Collections IO Configuration Runtime déployement
Security Net ServiceProcess InteropServices
Text Reflection Diagnostics Remoting
Globalization Resources Threading Serialization
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu
Conclusion Les outils
• .NET et J2EE • CLR
– .NET+COM+ ≅ J2SE + J2EE – .net framework (gratuit !) SDK, runtime
– efficicacité ? – Rotor (win, FreeBSD, MacOS X)
• Plusieurs langages et un langage dédié (C#) – Mono (Linux)
• Plateforme cible principale : Win – DotGNU (Linux)
• Une volonté de Microsoft vers des solutions non • IDE
propriétaires – VisualStudio (payant …)
– standardisation ECMA/ISO de C# – SharpDevelop (gratuit)
– implémentations open source – WebMatrix (gratuit)
– ...
Intro .net Archi .net Langages CLR BCL Conclu Intro .net Archi .net Langages CLR BCL Conclu