Title: ' Net
1. Net C
- Chen Shan Liu Ying
- Master 2 pro GI - SRR
- 2003-2004
2Plan
- . NET
- Introduction
- Historique
- .NET Framework
- C
- .NET Remoting
3Quest ce que .Net?
- Une technologie prônée par Microsoft
- Une nouvelle plate-forme de développement
logiciel - Une version sur les architectures distribuées
- Un ensemble de spécifications
- Des nouveaux langages(C, )
- Le langage CIL(Commom Intermediate Langage)
4Historique
- Des 1998, Microsoft veut développer un nouveau
produit pour résoudre les pbs de COM - Le 13 février 2002 la première version
exploitable de .NET est publiée - En mars 2003, la version 1.1 du Framework .NET
est disponible - Fournisseurs de base de données(Oracle et ODBC)
- La sécurité
- XML/XSLT
-
5.NET Framework
- Introduction
- Assemblage
- Avantage
- Structure
- CLR
- Définition
- Rôle
- Bibliothèque de classes de base
6Vue générale de .Net
CLS ( Common Langage Specification) C , VB.NET
Outils
Infrastructure pour le développement
dapplication distribuées (COM, .NET Remoting,
ASP.NET)
Bibliothèque de classes de base ( ADO.NET, Forms,
XML )
Implémentation du CLI (Commom Langage
Infrastructure) CLR (Common Langage Runtime)
7Type dapplications
- Interface utilisateur Windows (Windows form)
- Application en mode console Windows
- Service Windows
- Service web
- Application web
8Assemblages
- Avantages des assemblages
- Structure dun assemblage
9Avantages des assemblages
- Lenfer des DLLs résolu
- La base des registres nest plus sollicitée
- Les assemblages sont infalsifiables
- Les assemblages sont prévus pour être portables
- Un assemblage peut être morcelé en plusieurs
fichiers
10Structure dun assemblage
- Représentation physique dun assemblage
Assemblage
Foo2.netmodule
Foo1.exe
Image.jpg
Manifeste Ref ver Foo2 Ref ver Image.jpg
Métadonnées de type
Code CIL des méthodes des types
méthodes des types
Code IL des méthodes des types
Ressources (image, sons )
11CLR
- Common Langage Runtime
- Le moteur dexécution des applications .NET
- Actions
- Compilation à lexécution du code CIL
- Gestion des exceptions
- Gestion des domaines dapplications
12Compilation à lexécution du code CIL
Assemblage
Compilation JIT Langage source
------------------gtcode CIL ----------------------
----gtlangage machine
- JIT Just In Time
- Compiler le méthode juste avant le premier appel
- Avantages
- Compiler quune fois le code source de haut
niveau - Distribuée sous forme dassemblages
- Exécutable sur différents machines et différents
OS
13Compilation à lexécution du code CIL
- 2 types de compilateurs
- Compilateur normal
- Effectuer nombre doptimisations
- Mais gourmand en mémoire et en temps machine
- Compilateur économe
- Remplacer CIL par langage machine équivalent
- ngen.exe(Native Image Generator)
14Gestion des exceptions
- Chercher le gestionnaire dexception
- Si ne pas trouvé, terminer le programme
- Sérialiser et propager lexception
- Parfois rattraper une exception
15Gestion des domaines dapplication
- un domaine dapplication
- conteneur logique dassemblage(s)
- Assemblages chargés par CLR
- Décharger un domaine dapplication tout entier
- Garantir lisolation des domaines dapplications
16Bibliothèque de classes de base
- Environ 1400 classes
- Namespace ensemble de classes
- La racine des namespaces System
- les types basiques comme Byte, Boolean, Object
- Les application graphiques (Windows Forms)
- System.Windows.Forms
- ADO.NET et XML
17Les conceptions nouveaux
- La gestion du code durant lexécution
- Indépendance du OS et du matériel sous-jacent
- Introduction dune entité plus léger que
processus - Interaction entre un grand nombre de langages
18Le langage Cplan
- Introduction
- Types
- Structure dun programme
- Membres
- Instructions
- Notations complémentaires
19Introduction C
- Nouveau langage créé pour .NET
- Hérite de C (Espace de nomNamespace, pointeur
unsagecode, unsigned types) - Ressemble à Java
- Concepts clés
- Composants orientés
- Tout est objet
- Utilise les classes du framework .NET
- Exemple Hello World
object
Stream
Hashtable
int
double
MemoryStream
FileStream
using System class HelloWorld static void
Main( ) Console.WriteLine("Hello
world") Console.ReadLine() // Hit enter to
finish csc HelloWorld.cs HelloWorld.exe
20IntroductionModèle dexécution
MSIL
compilation
Code C
Assemblage
JIT
Code natif
Runtime du système
.NET CLR
Code Natif
Code Natif
Code Natif
Code Natif
21Types
- Un programme C est une collection de type
- Classes,interfaces,structures,délégués,énumération
s - C fournis un ensemble de types prédéfinis
- i.e. int, byte, char,string, object,
- Les types sont
- Des données membres
- Des fonctions membres
- Dautres types
- Il y a 2 catégories de typesvaleur et référence
Champs, constantes, tableaux, évènements
Méthodes, opérateurs, constructeurs, propriétés,
indexeurs
22Types
int i 123 string s "Hello world"
- Type Valeur
- Contient des données
- Ne peut être null
- Primitives int i
float x - Enumérations enum State
Off, On - Structures struct
Point int x, y - Type référence
- Contient des références
- vers des objets
- Peut être null
- Racine object
- Chaîne string
- Classes class Foo
Bar, IFoo - Interfaces interface
IFoo IBar - Tableau string a
new string 10 - Delegates delegate
void Empty()
23Types
- Bénéfice des types valeurs
- Pas dallocation dans le tas, moins de travail
pour le GC - Meilleur utilisation de la mémoire
- Moins de référence indirecte
24Types
- Types définis par lutilisateur
25TypesEnums
- Enums
- Grouper certaines constantes de même catégorie.
- Dérive de System.Enum
- C
- public enum Color red, green, black, blue
- public void setColor(Color color)
- if (Enum.IsDefined(typeof(Color), color)
-
-
- Java
- public void setColor(int color)
- if (color ! RED color ! GREEN
- color ! BLACK color!BLUE)
-
-
-
26TypesInterfaces
- Une interface définie un contrat
- Elle contient méthodes, propriétés, indexeurs,
évènements - Chaque classe or structure implémentant une
interface doit supporter toute les parties du
contrat - Les interfaces permettent le polymorphisme
- Plusieurs classes et structures peuvent
implémenter la même interface - Une interface ne contient pas dimplémentation
- Elle doit être implémentée par une classe ou une
structure
27TypesClasses
public class JvnServerImpl MarshalByRefObject,
IJvnLocalServer, IJvnRemoteServer
//class jvnServerImpl
- Type référence défini par lutilisateur
- Similaire aux classes C ou Java
- Héritage simple sur la classe
- Peuvent implémenter de multiples interfaces
- Contrôle daccès
- public, private, internal, protected, protected
internal - Le mode par défaut est private
- Membres
- Constantes, champ (fields), méthodes, opérateurs
(constructeurs et destructeurs) - Propriétés, indexeurs, évènements
- Membres par classe (static) ou par instance
- Instantancié par lopérateur new
28TypesStruct
- Similaire aux classes, mais
- Type valeur défini par lutilisateur
- Hérite toujours dobjet
- Ideal pour des objets légers
- int, float, double, etc., sont des structures
- Permet la définition de type primitifs par
lutilisateur - Complex, point, rectangle, color, rational
- Héritage multiple des interfaces
- Même membres que les classes
- Contrôle daccès
- public, internal, private
- Instancié par lopérateur new
29TypesDelegates
- Un délégué (delegate) est un type référence qui
défini la signature dune méthode - Quand il est instancié, un délégué peut faire
référence à une ou plusieurs méthodes - De manière intuitive un pointeur sur une
fonction dans le modèle objet - Sert de base pour la gestion des évènements
30Structure dun programme Organisation des types
- Organisation physique
- Les types sont définis dans des fichiers
- Les fichiers sont compilés en modules
- Les modules sont regroupés en assemblage
31Structure dun programmeAssembly
- Désigner un ensemble de code/sources
- Comporte 3 parties
- Un manifest
- Des classes
- Des meta-données
32Structure dun programme Espaces de noms
- Un nom de type doit être unique au sein dun
espace de nom (Namespace) - Permet lorganisation logique des types
- Il ny a pas de relation entre les espaces de
noms et les fichiers (différence avec Java)
33Structure dun programme Espaces de noms
Exemple
- Java
- pakage Jvn
- public class JvnServerImpl
-
- C
- namespace Irc
-
- namespace Jvn
-
- //namespace Jvn
- //namespace Irc
34Structure dun programmeLimport de bibliothèques
- Java (JvnServerImpl.java)
- pakage Jvn
- import java.rmi.
- public class JvnServerImpl
-
-
- javac classpath XX.class
- JvnServerImpl.java
- Variable denvironnement CLASSPATH
- C(JvnServerImpl.cs)
- namespace Jvn
- using System
- using System.Runtime.Remoting
- public class JvnServerImpl
-
-
-
- csc \rSystem.dll JvnServerImpl.cs
35Structure dun programmeMéthode Main
- Lexécution dun programme démarre à la méthode
statique Main() - Une seule méthode avec une de ces signatures par
assemblage - static void Main()
- static int Main()
- static void Main(string args)
- static int Main(string args)
36MembresPlan
- Constantes
- Champ (fields)
- Opérateurs (constructeurs et destructeurs)
- Propriétés
- Indexeurs
- évènements
37MembresOpérateur Constructeur
- Implémenter les actions nécessaires à
linitialisation dune instance de la classe - Le même nom que la classe
- Ne retourne aucun paramètre
Java public class JvnServerImpl private
JvnServerImpl super()
C public class JvnServerImpl private
JvnServerImpl()base()
38MembresOpérateur Destructeur
- Implémenter les actions nécessaire pour détruire
une instance de la classe - Le même nom que la classe, précédé du caractère
- Ne peut pas être appelé directement
public class JvnServerImpl private
JvnServerImpl()
39MembresPropriétés
- Une propriété est un champ virtuel
- Ressemble à un champ, mais est implémenté par du
code - Peut être read-only, write-only ou read/write
- Java
- public class JvnCoordImpl
- private int identification
- public int getId()
- return identification
-
- public void setId(int id)
- this.id id
-
-
-
- JvnCoordImpl coord new JvnCoordImpl()
- int id coord.getId()
- coord.setId(id 1)
- C
- public class JvnCoordImpl
- private int identification
- public int Identification
- get return identification
- set identification value
-
-
- JvnCoordImpl coord new JvnCoordImpl()
- int id coord.Identification //get
- coord.Identification id 1 //set
- coord.Identifecation 1 //get / set
40MembresIndexeurs
- Un indexeur permet à une instance dêtre un
tableau virtuel - Peut être surchargé (i.e. indexé par int et par
string) - Peut être read-only, write-only ou read/write
public class ListBox Control private
string items public string thisint index
get return itemsindex set
itemsindex value
ListBox listBox new ListBox() listBox0
"hello" Console.WriteLine(listBox0)
41MembresEvènements
- C supporte les évènements
- Basé sur la notion de délégué
- Lémetteur de lévénement, défini le délégué
- Les clients de lévènement enregistrent le
traitement à associer à lévènement - Appel de et de - sur les délégués
- Il ne peuvent pas créer les évènements
- Les délégués multicast permettent à plusieurs
objets de senregistrer pour le même évènement
42MembresEvènements
- C
- class Irc
-
-
- Button read_button new Button()
- read_button.Text read)
- read_button .Click new
- System.EventHandler(this.read_Click
) -
- private void read_Click(object serder, EventArgs
e) -
-
-
-
- Java
- public class Irc
-
-
- Button read_button new Button(read)
- read_button.addActionListener
- (new readListener(this))
-
-
- class readListener implements ActionListener
-
- public void actionPerformed (ActionEvent e)
-
-
43Instructions Survol
- Expressions
- checked, unchecked
- lock
- using
- Conditionnels
- if
- Switch
- Boucles
- while
- do
- for
- foreach
- Sauts
- break
- continue
- goto
- return
- throw
- Exceptions
44InstructionsThreads synchronisation
- Lock
- Exclusion mutuelle
- Mis en oeuvre à laide de la classe
System.Threading.Monitor(Wait(),PulseAll(),Pulse()
)
public class CheckingAccount decimal
balance public void Deposit(decimal amount)
lock (this) balance amount
public void Withdraw(decimal amount) lock
(this) balance - amount
45Instructions checked et unchecked
- Les instructions checked et unchecked permettent
de contrôler le débordement dans les expressions
arithmétique et les affectations - checked force le contrôle
- unchecked supprime le contrôle
- Le mode par défaut est unchecked
- Lutilisation de la directive /checked du
compilateur permet dutiliser le mode checked par
défaut
46Instructions checked et unchecked
- using System
-
- class CheckedTest
-
- public static void Main()
-
- int num 5000
- / OVERFLOW I /
- byte a (byte) num / overflow detected only
if /checked compiler option on / - / OVERFLOW II /
- checked
-
- byte b (byte) num / overflow ALWAYS
detected / -
- / OVERFLOW III /
- unchecked
-
- byte c (byte) num / overflow NEVER
detected / -
47Instructions Exceptions
- C
- public static JvnServerImpl JvnGetServer()
- try
-
-
- catch
-
-
- finally
-
-
- Java
- public static JvnServerImpl JvnGetServer()
- throws RemoteException
- try
-
-
- catch
-
-
- finally
-
-
-
48Notions complémentaires
- Classes et structures
- Boxing et unboxing
- Attributs
- Commentaires en XML
49Classes et StructuresDifférences
50Classes et StructuresSimilarités
- Chacune
- Est un type défini par lutilisateur
- Peut implémenter plusieurs interfaces
- Peut contenir
- Données
- Champs, constantes, événements, tableaux
- Fonctions
- Méthodes, propriétés, indexeurs, opérateurs,
constructeurs - Définition de types
- Classes, structures, énumérations, interfaces,
délégués
51Classes et StructuresExemple
- struct SPoint int x, y ...
- class CPoint int x, y ...
- SPoint sp new SPoint(10, 20)
- CPoint cp new CPoint(10, 20)
52Boxing et unboxing
- Boxing type primitif(valeur) -gt
object(référence) - UnBoxingOpération inverse du boxing
123
i
int i 123 object o i int j (int)o
System.Int32
o
123
123
j
53Les attributs
- Un moyen dinsérer des annotations(i.e
méta-données) - Un moyen de fournir des informations au runtime
dans le but dexécuter des tâches additionnelles
ou détendre les caractéristiques dun type
donné. - Exemple
- MethodImpl(MethodImplOptions.Synchronized)
Similaire au mot-clé synchronized de Java. - Serializable Similaire à l'implémentation de
l'interface java.io.Serializable de Java. - Peut créer ses propres attributs de Runtime en
sous-classant System.Attribute
54Commentaires en XML
- C donne la possibilité de produire de la
documentation en lien avec le code compilé - C permet décrire ces commentaires en XML
- Début du commentaire ///
- Un document XML est généré lors de la compilation
du code avec largument /doc
55.NET Remotingplan
- Introduction
- Base du .NET Remoting
- Marshalling
- Client activated
- Server activated
- Configuration
56.NET RemotingIntroduction
- Infrastructure de larchitecture .NET
- Motivation Invocation des méthodes sur des
objets distants - Ressemble à Java RMI
57.NET Remoting Base du .NET Remoting
- Terminologie - Architecture
- Channels
- Deux Transports standard- http// ou tcp//
- Http// - fonctionne avec les firewalls
- Tcp// - high speed, format binaire
- Formatters
- Transformer les Messages en Stream
- Binaire
- Soap 1.1 Compliant
- Personnalisé
58.NET Remoting Marshalling
- Marshall by Reference
- Dérive de System.MarshalByRefObject
- Accessible via des Proxy
- Lobjet reste sur le serveur
- Marshall by Value
- Les objets sont sérialisés
- Attribute Serializable
- Implement ISerializable
- Lobjet est recopié vers le client
59.NET Remoting Client Activated
- Créé par le Client
- Le Client contrôle
- la durée de vie
- Lease bail
60.NET Remoting Server Activated
- Le serveur est responsable de la durée de vie de
lobjet - Configuration
- ltwellknown
- modeSingleCall ou Singleton
- typetype,assembly
- objectUrimyobject /gt
- Programmation
- Créer un Type Wellknown
- Enregistrer sur le serveur
61.NET Remoting Configuration par fichier
- Fichier de configuration
- ltconfigurationgt
- ltSystem.Runtime.Remotinggt
- ltapplicationgt
- ltservicegt
- ltwellknown modeSingleton
typeNamespace.Class,Assembly
objectUriURI/gt - lt/servicegt
- Méthode RemotingConfiguration.Configure(config
file) - La Méthode fonctionne coté serveur et coté client
62.NET Remoting Configuration Dynamique
- Cache les informations de configuration aux
utilisateurs - Facile a déployer
- Nécessite une recompilation à chaque modification
du paramétrage
63.NET Remotingobjet distribué
- public class ServiceClass MarshalByRefObject
-
- private DateTime starttime
- public ServiceClass()
-
- Console.WriteLine("A ServiceClass has been
created.") - starttime DateTime.Now
-
- ServiceClass()
-
- Console.WriteLine("This object is being
collected after " (new TimeSpan(DateTime.Now.Tic
ks - starttime.Ticks)).ToString() " seconds.")
-
- public DateTime GetServerTime()
-
- Console.WriteLine("Time requested by a
client.") - return DateTime.Now
64.NET RemotingCoté serveur
- using System
- using System.Diagnostics
- using System.Runtime.Remoting
- using System.Runtime.Remoting.Channels
- using System.Runtime.Remoting.Channels.Tcp
- public class ServerProcess
-
- public static void Main(string Args)
-
- RemotingConfiguration.Configure("server.exe.conf
ig") - Console.WriteLine("Press enter to stop this
process.") - Console.ReadLine()
-
-
-
65.NET RemotingCoté client
- using System
- using System.Runtime.Remoting
- public class Client
-
-
- public static void Main(string Args)
-
-
- RemotingConfiguration.Configure("Client.exe.conf
ig") - ServiceClass service new ServiceClass()
- Console.WriteLine(service.GetServerTime())
-
-
66.NET Remotingconfiguration de serveur
- ltconfigurationgt
- ltsystem.runtime.remotinggt
- ltapplicationgt
- ltservicegt
- ltwellknown mode"SingleCall"
- type"ServiceClass, ServiceClass"
- objectUri"RemoteObject"
- /gt
- lt/servicegt
- ltchannelsgt
- ltchannel port"8080" ref"http" /gt
- lt/channelsgt
- lt/applicationgt
- lt/system.runtime.remotinggt
- lt/configurationgt
67.NET Remotingconfiguration de client
- ltconfigurationgt
- ltsystem.runtime.remotinggt
- ltapplicationgt
- ltclientgt
- ltwellknown
- type"ServiceClass, ServiceClass"
- url"http//localhost8080/RemoteObjec
t" - /gt
- lt/clientgt
- ltchannelsgt
- ltchannel ref"http"gt
- ltclientProvidersgt
- ltformatter ref"soap"/gt
- ltprovider ref"propsetter"
username"bob" writeToConsole"true"gt - domain"hello" /gt
- lt/providergt
- lt/clientProvidersgt
Declaration dun point de terminaison de type
singleton
Canal associé avec application
Encodeur de format associé avec un canal
68.NET RemotingDemo
69Quelques ressources
- http//msdn.microsoft.com
- http//windows.oreilly.com/news/hejlsberg_0800.htm
l - http//www.csharphelp.com/
- http//www.csharp-station.com/
- http//www.csharpindex.com/
- http//msdn.microsoft.com/msdnmag/ issues/0900/
csharp/csharp.asp - http//www.hitmill.com/programming/dotNET/csharp.h
tml - http//www.c-sharpcorner.com/
- http//msdn.microsoft.com/library/ default.asp?
URL/library/dotnet/ csspec/vclrfcsharpspec_Sta
rt.htm