C'est quoi .NET ? | |||
".NET is the Microsoft Web services strategy to connect | |||
information, people, systems, and devices through software." | |||
Introduction à .NET | |||
"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." | |||
Intro .net | Archi .net Langages CLR BCL Conclu |
Plan du cours | L'architecture .NET 2.0 | ||||
• | |||||
C'est quoi .NET ? | |||||
• L'architecture .NET | |||||
• Les langages .NET | |||||
Common Language Specification (CLS) | |||||
• Le Common Language Runtime (CLR) | Web services Web forms Windows forms | ||||
• Les bibliothèques de base | |||||
• Les outils | |||||
Base Class Library (BCL) | |||||
Common Language Runtime (CLR) | |||||
Intro .net | Archi .net Langages CLR BCL Conclu | Intro .net | Archi .net |
.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 () | – , C++, J#, Eiffel# | |||||
– présentation par pages web dynamiques () | ||||||
• Mais aussi : | ||||||
– ADA, Scheme, Python, Fortran, … | ||||||
• En tout une vingtaine de langages supportés | ||||||
Intro .net | Archi .net | Intro .net Archi .net | Langages |
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 | Intro .net Archi .net | Langages | |||||
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 | ||||||||
en code natif de code miettes | ||||||||
CLR | BCL Conclu | 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, | • Object | |||||||
memberwiseClone, ToString | • | |||||||
• interfaces | String | |||||||
• pointeurs | • Flottants et entiers dépendant de la machine | |||||||
CLR | BCL Conclu | 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 | ||||||
– | – des métadonnées (images, textes, vidéos, …) | ||||||
pour le moteur d'exécution (gestion mémoire par | – créé par | ||||||
exemple) | |||||||
• 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 | |||||||
CLR | BCL Conclu | 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 | • Microsoft.Csharp, VisualBasic, JScript | ||||||
• Compilation JIT | – classes pour supporter la compilation et la génération | ||||||
de code dans différents langages | |||||||
• Gestion mémoire | • | ||||||
• 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 | |||||||
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) | |||
– DotGNU (Linux) | ||||
• Plateforme cible principale : Win | ||||
• Une volonté de Microsoft vers des solutions non | • IDE | |||
propriétaires | – VisualStudio (payant …) | |||
– standardisation ECMA/ISO de C# | – SharpDevelop (gratuit) | |||
– WebMatrix (gratuit) | ||||
– implémentations open source | ||||
– | ||||
Intro .net Archi .net Langages CLR BCL | Conclu | Intro .net Archi .net Langages CLR BCL | Conclu |