aucun titre de diapositive€¦ · • il y a le managed c++ et le unmanaged c++ … • le managed...
TRANSCRIPT
![Page 1: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/1.jpg)
Clémentine NebutLIRMM / Université de Montpellier 2
Introduction à .NET
![Page 2: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/2.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
C'est quoi .NET ?
".NET is the Microsoft Web services strategy to connect information, people, systems, and devices through software."
http://www.microsoft.com/net/basics.mspx
"The .NET Framework is a development and execution environment that allows different programming languages & libraries to work together seamlessly to create Windows-based applications that are easier to build, manage, deploy, and integrate with other networked systems."
http://www.msdn.microsoft.com/netframework/gettingstarted/default.aspx
![Page 3: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/3.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
C'est quoi .NET ?
• La réponse de Microsoft à J2EE …
• Une plateforme multi-langages• Un ensemble de classes de bibliothèque• Des facilités :
– pour créer et utiliser des services web– et globalement pour la création d'applis n-tiers
• Un langage dédié : C#
![Page 4: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/4.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
.NET 1, 2, 3, 4
• .net 1.0– avril 2003
• .net 2– 2. 0 : janvier 2006
• .net 3.0 : WCF, WPF, WF, Cardspace– 3.0 : novembre 2006– 3.5 beta 2 : août 2007
• .net 3.5 : fin 2007 (SP1 : 2008)– Ajax, linq, P2P, …
• .net 4 : 2010– Visual Basic .NET & C# : named parameters, optional parameters, ...– Support pour les Code Contracts.
![Page 5: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/5.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
.NET 4, 4.5
• .net 4.0 : 2010– Parallel linq : exécution de requêtes pour processeurs
multi-coeur
• .net 4.5 : 2011
![Page 6: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/6.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
L'architecture .NET
Common Language Runtime (CLR)
Base Class Library (BCL)
Data and XML classes
Web services Windows formsWeb forms
Common Language Specification (CLS)
VB.NET C++ Eiffel C# ...
![Page 7: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/7.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
.NET : pour quelles applications ?
• Conçu pour faciliter le développement d'applications n-tiers– utilisation/création facile d'objets distribués et de
services web, P2P (3.5)
– accès facile aux données (ADO.NET)
– présentation par pages web dynamiques (ASP.NET)
![Page 8: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/8.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Les langages .NET
• Le langage "dédié" : C# – proche de java
• Les classiques– VB.NET, C++, J#, Eiffel#
• Mais aussi :– ADA, Scheme, Python, Fortran, …
• En tout une vingtaine de langages supportés
J# n'est plus supporté ...
![Page 9: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/9.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Langage .NET et MSIL
• Un langage .NET – est compilé vers du MSIL
– est conforme à la CLS
• MSIL = CIL= Microsoft Intermediate Language
= Common Intermediate Language
Byte code Java
interprété par un moteur d'exécution (machine virtuelle)
![Page 10: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/10.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Compilation
CIL
Code machine natif
Compilation Just In Time
Compilation classique
VB.NET C++ Eiffel C# ...
![Page 11: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/11.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Compilation Just In Time
Programme en MSILProgramme en MSIL
Compilateur JIT du code MSILCompilateur JIT du code MSIL
Code natif administréCode natif administré
Exécution du codeExécution du code
Appel d'une méthode non compilée
![Page 12: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/12.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Common Language Specification
• Contient la spécification des langages .net
• Entre autres :– le système de types
– un ensemble de règles• règle 7 : "The underlying type of an enum shall be a built-
in CLS integer type."
• règle 25 : "The accessibility of a property and of its accessors shall be identical."
– ...
![Page 13: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/13.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Managed / unmanaged code
• Managed code– code écrit pour le CLR
– code "géré" par le CLR : ramasse-miettes, politique de sécurité, vérification du typage à l'exécution, …
• Unmanaged code– code non géré par le CLR
– exécution plus rapide
![Page 14: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/14.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Managed / Unmanaged
![Page 15: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/15.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Le statut à part de C++ :
• Il y a le managed C++ et le unmanaged C++ …
• Le managed C++ est une extension au C++ pour satisfaire les CLS
• Cohabitation possible entre du C++ managed et du C++ unmanaged (spécificité C++)– réutilisation de C++ existant– 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++
![Page 16: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/16.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Common Language Runtime
Prise en charge de la bibliothèque de classes de base
Prise en charge multithread Marshaleur COM
Vérificateur de type Gestionnaire d'exceptions
Moteur de sécurité Moteur de débogage
Chargeur de classes
Compilateur MSIL en code natif
Gestionnairede code
Ramassemiettes
![Page 17: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/17.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Composants principaux du CLR
• Système de type
• Système de métadonnées
• Système d'exécution
![Page 18: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/18.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Le système de types
• 2 sous-systèmes :– types "valeur" (value types)
• de base ou construits par le programmeur
– types "référence" (reference type)• objet
– Tous les objets héritent de la classe object
– Méthodes : equals, finalize, getHashCode, getType, memberwiseClone, ToString
• interfaces
• pointeurs
![Page 19: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/19.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Built-In Types
• Bool
• Char (16-bit unicode)
• Entiers signés et non signés, sur 8, 16, 32 et 64 bits
• Flottants sur 32 et 64 bits
• Object
• String
• Flottants et entiers dépendant de la machine
![Page 20: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/20.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Les métadonnées
• Pour stocker des informations sur les composants
• Les compilateurs stockent des infos sur les types– pour l'interopérabilité
– pour le moteur d'exécution (gestion mémoire par exemple)
• Extension des métadonnées possible
![Page 21: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/21.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Assemblies et Manifests
• Assembly– un manifeste
– des classes de n'importe quel langage placées dans un espace de nom
– des méta-données (images, textes, vidéos, …)
– créé par al.exe
• Manifeste– informations de nom et de version
– liste des types et l'endroit où ils sont dans l'assembly
– informations de dépendance
![Page 22: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/22.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Système d'exécution
• Chargement et vérification de code
• Gestion des exceptions
• Compilation JIT
• Gestion mémoire
• Sécurité
![Page 23: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/23.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
La bibliothèque de classes
• Commune pour tous les langages
• Microsoft.Csharp, VisualBasic, JScript– classes pour supporter la compilation et la génération
de code dans différents langages
• Microsoft.Vsa– 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
![Page 24: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/24.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
L'espace de noms System
System
System.Data System.Xml
System.Web
Globalization
Text
Security
Collections
Resources
Reflection
Net
IO
Threading
Diagnostics
ServiceProcess
Configuration
Design
ADO
SQLTypes
SQL
XPath
XSLT
RuntimeInteropServices
Remoting
Serialization
Serialization
Configuration SessionState
Caching Security
ServicesDescription
Discovery
Protocols
UIHtmlControls
WebControls
System.Drawing
Imaging
Drawing2D
Text
Printing
System.WinForms
Design ComponentModel
Reader/Writers
![Page 25: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/25.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
.net 3
•Approche unifiée UI, documents, animations•Moteur de composition basé sur des vecteurs intégrés•Modèle de prog déclarative Xaml•Facilités de déployement
•Unification basée basée services des moyens de communication
•remoting, WS, COM+, ...
•Unification basée services des moyens de communication (remoting, WS, COM+, …)
•Gestion des
identités
![Page 26: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/26.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Conclusion
• .NET et J2EE– .NET+COM+ J2SE + J2EE
– efficicacité ?
• Plusieurs langages et un langage dédié (C#)
• Plateforme cible principale : Win
• Une volonté de Microsoft vers des solutions non propriétaires– standardisation ECMA/ISO de C#
– implémentations open source
![Page 27: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/27.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
Les outils
• CLR– .net framework (gratuit !) - SDK, runtime
– Mono (Linux)
• IDE– VisualStudio (payant …)
– SharpDevelop (gratuit)
– MonoDevelop (gratuit)• MonoDevelop enables developers to quickly write desktop and web
applications on Linux, Windows and Mac OS X. It also makes it easy for developers to port .NET applications created with Visual Studio to Linux and Mac OS X maintaining a single code base for all platforms.
– ...
![Page 28: Aucun titre de diapositive€¦ · • Il y a le managed C++ et le unmanaged C++ … • Le managed C++ est une extension au C++ pour satisfaire les CLS • Cohabitation possible](https://reader035.vdocuments.us/reader035/viewer/2022071118/60152b216cb92a777c4fca24/html5/thumbnails/28.jpg)
Intro .net CLRArchi .net Langages BCL Conclu
.NET, linux et macOS
• Mono– http://www.mono-project.com/Main_Page
– « Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.»