. Net & C#
description
Transcript of . Net & C#
. Net & C#. Net & C#
Chen Shan & Liu YingChen Shan & Liu YingMaster 2 pro GI - SRRMaster 2 pro GI - SRR
2003-20042003-2004
2. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
PlanPlan
. NET. NET IntroductionIntroduction HistoriqueHistorique .NET Framework.NET Framework
C#C# .NET Remoting.NET Remoting
3. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Qu’est ce que .Net?Qu’est ce que .Net?
Une technologie prônée par MicrosoftUne technologie prônée par Microsoft Une nouvelle plate-forme de développement Une nouvelle plate-forme de développement
logiciel logiciel Une version sur les architectures Une version sur les architectures
distribuéesdistribuées Un ensemble de spécificationsUn ensemble de spécifications
Des nouveaux langages(C#, …)Des nouveaux langages(C#, …) Le langage CIL(Commom Intermediate Le langage CIL(Commom Intermediate
Langage)Langage) ……
4. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
HistoriqueHistorique Des 1998, Microsoft veut développer un Des 1998, Microsoft veut développer un
nouveau produit pour résoudre les pbs de nouveau produit pour résoudre les pbs de COMCOM
Le 13 février 2002 la première version Le 13 février 2002 la première version exploitable de .NET est publiéeexploitable de .NET est publiée
En mars 2003, la version 1.1 du En mars 2003, la version 1.1 du Framework .NET est disponibleFramework .NET est disponible Fournisseurs de base de données(Oracle et Fournisseurs de base de données(Oracle et
ODBC)ODBC) La sécuritéLa sécurité XML/XSLTXML/XSLT ……
5. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Framework.NET Framework
IntroductionIntroduction Assemblage Assemblage
Avantage Avantage StructureStructure
CLRCLR DéfinitionDéfinition Rôle Rôle
Bibliothèque de classes de base
6. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Vue générale de .NetVue générale de .Net
CLS ( Common Langage Specification)
C #, VB.NET…
Bibliothèque de classes de base
( ADO.NET, Forms, XML …)
Implémentation du CLI
(Commom Langage Infrastructure)
CLR (Common Langage Runtime)
Outils
Infrastructure pour le
développement d’application
distribuées
(COM+, .NET Remoting, ASP.NET)
7. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Type d’applicationsType d’applications
Interface utilisateur Interface utilisateur WindowsWindows ((WindowsWindows form) form)
Application en mode console Application en mode console WindowsWindows
Service Service WindowsWindows Service webService web Application webApplication web
8. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
AssemblagesAssemblages
Avantages des assemblagesAvantages des assemblages Structure d’un assemblageStructure d’un assemblage
9. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Avantages des Avantages des assemblagesassemblages
L’enfer des DLLs résoluL’enfer des DLLs résolu La base des registres n’est plus La base des registres n’est plus
sollicitéesollicitée Les assemblages sont infalsifiablesLes assemblages sont infalsifiables Les assemblages sont prévus pour Les assemblages sont prévus pour
être portablesêtre portables Un assemblage peut être morcelé en Un assemblage peut être morcelé en
plusieurs fichiersplusieurs fichiers
10. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un Structure d’un assemblageassemblage
Représentation physique d’un assemblageReprésentation physique d’un assemblage
Assemblage
Foo2.netmodule
Métadonnées de type
Code CIL des méthodes des types
Ressources (image, sons …)
Foo1.exe Image.jpg
Manifeste
Ref ver Foo2
Ref ver Image.jpg
méthodes des typesCode IL des méthodes des types
11. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
CLRCLR
Common Langage RuntimeCommon Langage Runtime Le moteur d’exécution des Le moteur d’exécution des
applications .NETapplications .NET Actions:Actions:
Compilation à l’exécution du code CILCompilation à l’exécution du code CIL Gestion des exceptionsGestion des exceptions Gestion des domaines d’applicationsGestion des domaines d’applications
12. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Compilation à l’exécution du Compilation à l’exécution du code CILcode CIL
JIT – Just In TimeJIT – Just In Time Compiler le méthode juste avant le premier appelCompiler le méthode juste avant le premier appel
AvantagesAvantages Compiler qu’une fois le code source de haut Compiler qu’une fois le code source de haut
niveauniveau Distribuée sous forme d’assemblagesDistribuée sous forme d’assemblages Exécutable sur différents machines et différents Exécutable sur différents machines et différents
OSOS
Assemblage Compilation JIT
Langage source ------------------>code CIL -------------------------->langage machine
13. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Compilation à l’exécution du Compilation à l’exécution du code CILcode CIL
2 types de compilateurs2 types de compilateurs Compilateur normalCompilateur normal
Effectuer nombre d’optimisationsEffectuer nombre d’optimisations Mais gourmand en mémoire et en temps Mais gourmand en mémoire et en temps
machinemachine Compilateur économeCompilateur économe
Remplacer CIL par langage machine Remplacer CIL par langage machine équivalentéquivalent
ngen.exe(Native Image Generator)ngen.exe(Native Image Generator)
14. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Gestion des exceptionsGestion des exceptions
Chercher le gestionnaire d’exceptionChercher le gestionnaire d’exception Si ne pas trouvé, terminer le Si ne pas trouvé, terminer le
programmeprogramme Sérialiser et propager l’exceptionSérialiser et propager l’exception Parfois rattraper une exceptionParfois rattraper une exception
15. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Gestion des domaines Gestion des domaines d’applicationd’application
un domaine d’application un domaine d’application conteneur logique d’assemblage(s) conteneur logique d’assemblage(s)
Assemblages chargés par CLRAssemblages chargés par CLR Décharger un domaine d’application Décharger un domaine d’application
tout entiertout entier Garantir l’isolation des domaines Garantir l’isolation des domaines
d’applicationsd’applications
16. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Bibliothèque de classes de base
Environ 1400 classesEnviron 1400 classes Namespace : ensemble de classesNamespace : ensemble de classes La racine des namespaces : SystemLa racine des namespaces : System les types basiques comme Byte, les types basiques comme Byte,
Boolean, Object…Boolean, Object… Les application graphiques (Windows Les application graphiques (Windows
Forms)Forms) System.Windows.FormsSystem.Windows.Forms
ADO.NET et XMLADO.NET et XML
17. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Les conceptions Les conceptions nouveauxnouveaux
La gestion du code durant l’exécutionLa gestion du code durant l’exécution Indépendance du OS et du matériel Indépendance du OS et du matériel
sous-jacentsous-jacent Introduction d’une entité plus léger Introduction d’une entité plus léger
que processusque processus Interaction entre un grand nombre de Interaction entre un grand nombre de
langageslangages ……
18. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Le langage C#Le langage C#planplan
IntroductionIntroduction TypesTypes SStructure d’un programmetructure d’un programme MembresMembres InstructionsInstructions
Notations complémentairesNotations complémentaires
19. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Introduction Introduction C#C#
Nouveau langage créé pour .NETNouveau langage créé pour .NET Hérite de C++ (Espace de nom:Namespace, pointeur: Hérite de C++ (Espace de nom:Namespace, pointeur:
unsagecode, unsigned types)unsagecode, unsigned types) Ressemble à JavaRessemble à Java Concepts clés :Concepts clés :
Composants orientésComposants orientés Tout est objetTout est objet
Utilise les classes du framework .NETUtilise les classes du framework .NET Exemple: Hello WorldExemple: Hello World
using System;
class HelloWorld { static void Main( ) { Console.WriteLine("Hello world");
Console.ReadLine(); // Hit enter to finish }}
csc HelloWorld.cs
HelloWorld.exe
MemoryStream FileStream
Stream Hashtable int double
object
20. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
IntroductionIntroductionModèle d’exécutionModèle d’exécution
Code C#compilation
AssemblageJIT
Code natif
Runtime du système
.NET CLR
CodeNatif
CodeNatif
CodeNatif
CodeNatif
MSIL
21. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypes Un programme C# est une collection de typeUn programme C# est une collection de type
Classes,interfaces,structures,délégués,énumérationsClasses,interfaces,structures,délégués,énumérations C# fournis un ensemble de types prédéfinisC# fournis un ensemble de types prédéfinis
i.e. int, byte, char,string, object,…i.e. int, byte, char,string, object,… Les types sontLes types sont
Des données membresDes données membres Des fonctions membresDes fonctions membres D’autres typesD’autres types
Il y a 2 catégories de types:valeur et référenceIl y a 2 catégories de types:valeur et référence
Champs, constantes, tableaux, évènements
Méthodes, opérateurs, constructeurs, propriétés, indexeurs
22. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypes Type ValeurType Valeur
Contient des donnéesContient des données Ne peut être ‘null’Ne peut être ‘null’ Primitives Primitives intint i ; i ; floatfloat x; x; Enumérations Enumérations enumenum State { Off, On } State { Off, On } Structures Structures structstruct Point {int x, y; } Point {int x, y; }
Type référenceType référence Contient des références Contient des références
vers des objetsvers des objets Peut être ‘null’Peut être ‘null’ Racine objectRacine object Chaîne stringChaîne string Classes Classes classclass Foo: Bar, IFoo {… } Foo: Bar, IFoo {… } Interfaces Interfaces interfaceinterface IFoo: IBar {… } IFoo: IBar {… } Tableau Tableau stringstring[] a = new string [10][] a = new string [10] Delegates Delegates delegatedelegate void Empty(); void Empty();
int i = 123;string s = "Hello world";
123i
s "Hello world"
23. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypes
Bénéfice des types valeursBénéfice des types valeurs Pas d’allocation dans le tas, moins de Pas d’allocation dans le tas, moins de
travail pour le GCtravail pour le GC Meilleur utilisation de la mémoireMeilleur utilisation de la mémoire Moins de référence indirecteMoins de référence indirecte
24. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypes
Types définis par l’utilisateurTypes définis par l’utilisateur
EnumerationsEnumerations enumenum
ArraysArrays int[], string[]int[], string[]
InterfaceInterface interfaceinterface
Type référenceType référence classclass
Type valeurType valeur structstruct
Pointeur de Pointeur de fonctionfonction delegatedelegate
25. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypesEnumsEnums
EnumsEnums Grouper certaines constantes de même Grouper certaines constantes de même
catégorie.catégorie. Dérive de System.Enum Dérive de System.Enum
•C#public enum Color {red, green, black, blue};
public void setColor(Color color) {
if (Enum.IsDefined(typeof(Color), color) {
…
}
}
•Javapublic void setColor(int color) {
if (color != RED && color != GREEN &&
color != BLACK && color!=BLUE) {
…
}
26. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypesInterfacesInterfaces
Une interface définie un contratUne interface définie un contrat Elle contient méthodes, propriétés, indexeurs, Elle contient méthodes, propriétés, indexeurs,
évènementsévènements Chaque classe or structure implémentant une interface Chaque classe or structure implémentant une interface
doit supporter toute les parties du contratdoit supporter toute les parties du contrat Les interfaces permettent le polymorphismeLes interfaces permettent le polymorphisme
Plusieurs classes et structures peuvent implémenter la Plusieurs classes et structures peuvent implémenter la même interfacemême interface
Une interface ne contient pas d’implémentationUne interface ne contient pas d’implémentation Elle doit être implémentée par une classe ou une Elle doit être implémentée par une classe ou une
structurestructure
27. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypesClassesClasses
Type référence défini par l’utilisateurType référence défini par l’utilisateur Similaire aux classes C++ ou JavaSimilaire aux classes C++ ou Java
Héritage simple sur la classeHéritage simple sur la classe Peuvent implémenter de multiples interfacesPeuvent implémenter de multiples interfaces Contrôle d’accèsContrôle d’accès
publicpublic, , privateprivate, , internalinternal, , protectedprotected, , protectedprotected internalinternal
Le mode par défaut est Le mode par défaut est privateprivate MembresMembres
Constantes, champ (fields), méthodes, opérateurs Constantes, champ (fields), méthodes, opérateurs (constructeurs et destructeurs)(constructeurs et destructeurs)
Propriétés, indexeurs, évènementsPropriétés, indexeurs, évènements Membres par classe (static) ou par instanceMembres par classe (static) ou par instance
Instantancié par l’opérateur Instantancié par l’opérateur newnew
public class JvnServerImplpublic class JvnServerImpl:: MarshalByRefObject,MarshalByRefObject, IJvnLocalServer,IJvnLocalServer, IJvnRemoteServer {IJvnRemoteServer {
… …}//class jvnServerImpl}//class jvnServerImpl
28. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypesStructStruct
Similaire aux classes, maisSimilaire aux classes, mais Type valeur défini par l’utilisateurType valeur défini par l’utilisateur Hérite toujours d’objetHérite toujours d’objet
Ideal pour des objets ‘légers’Ideal pour des objets ‘légers’ intint, , floatfloat, , doubledouble, etc., sont des structures, etc., sont des structures Permet la définition de type primitifs par l’utilisateurPermet la définition de type primitifs par l’utilisateur
Complex, point, rectangle, color, rationalComplex, point, rectangle, color, rational Héritage multiple des interfacesHéritage multiple des interfaces Même membres que les classesMême membres que les classes Contrôle d’accèsContrôle d’accès
publicpublic, , internalinternal, , privateprivate Instancié par l’opérateur Instancié par l’opérateur newnew
29. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
TypesTypesDelegatesDelegates
Un délégué (delegate) est un type Un délégué (delegate) est un type référence qui défini la signature d’une référence qui défini la signature d’une méthodeméthode
Quand il est instancié, un délégué peut Quand il est instancié, un délégué peut faire référence à une ou plusieurs faire référence à une ou plusieurs méthodesméthodes De manière intuitive : un pointeur sur une De manière intuitive : un pointeur sur une
fonction dans le modèle objetfonction dans le modèle objet Sert de base pour la gestion des Sert de base pour la gestion des
évènementsévènements
30. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programme Structure d’un programme Organisation des typesOrganisation des types
Organisation Organisation physiquephysique Les types sont Les types sont
définis dans des définis dans des fichiersfichiers
Les fichiers sont Les fichiers sont compilés en modulescompilés en modules
Les modules sont Les modules sont regroupés en regroupés en assemblageassemblage
AssemblyModule(.dll/.exe)
FileType
31. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programmeStructure d’un programmeAssemblyAssembly
Désigner un ensemble de Désigner un ensemble de code/sourcescode/sources
Comporte 3 parties:Comporte 3 parties: Un Un manifestmanifest Des classesDes classes Des meta-donnéesDes meta-données
32. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programme Structure d’un programme Espaces de nomsEspaces de noms
Un nom de type doit être unique au Un nom de type doit être unique au sein d’un espace de nom sein d’un espace de nom (Namespace)(Namespace)
Permet l’organisation logique des Permet l’organisation logique des typestypes
Il n’y a pas de relation entre les Il n’y a pas de relation entre les espaces de noms et les fichiers espaces de noms et les fichiers (différence avec Java)(différence avec Java)
33. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programme Structure d’un programme Espaces de nomsEspaces de noms
JavaJavapakagepakage Jvn; Jvn;
public class JvnServerImpl{public class JvnServerImpl{
……
}}
C#C#namespacenamespace Irc { Irc {
……
namespacenamespace Jvn { Jvn {
……
} //namespace Jvn} //namespace Jvn
}//namespace Irc}//namespace Irc
Exemple
34. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programmeStructure d’un programmeL’import de bibliothèquesL’import de bibliothèques
Java Java (JvnServerImpl.java)(JvnServerImpl.java)
pakage Jvn; pakage Jvn;
importimport java.rmi.*; java.rmi.*;
public class JvnServerImpl {public class JvnServerImpl {
……
}}
javac javac –classpath–classpath XX.class XX.class
JvnServerImpl.javaJvnServerImpl.java
Variable d’environnement Variable d’environnement CLASSPATHCLASSPATH
C#(C#(JvnServerImpl.cs)JvnServerImpl.cs)
namespace Jvn {namespace Jvn {usingusing System; System;usingusing System.Runtime.RemotSystem.Runtime.Remoting;ing;
public class public class JvnServerImpl {JvnServerImpl {……}}
}}
csc csc \r\r:System.dll :System.dll JvnServerImpl.cs JvnServerImpl.cs
35. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Structure d’un programmeStructure d’un programmeMéthode MainMéthode Main
L’exécution d’un programme démarre à la L’exécution d’un programme démarre à la méthode statique méthode statique Main()Main()
Une seule méthode avec une de ces Une seule méthode avec une de ces signatures par assemblagesignatures par assemblage static void Main()static void Main() static int Main()static int Main() static void Main(string[] args)static void Main(string[] args) static int Main(string[] args)static int Main(string[] args)
36. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresPlanPlan
ConstantesConstantes Champ (fields)Champ (fields) Opérateurs (constructeurs et Opérateurs (constructeurs et
destructeurs)destructeurs) PropriétésPropriétés IndexeursIndexeurs évènementsévènements
37. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresOpérateur: ConstructeurOpérateur: Constructeur
Implémenter les actions nécessaires à Implémenter les actions nécessaires à l’initialisation d’une instance de la classel’initialisation d’une instance de la classe
Le même nom que la classeLe même nom que la classe Ne retourne aucun paramètreNe retourne aucun paramètre
C#C#public class JvnServerImpl {public class JvnServerImpl { … … private JvnServerImpl():private JvnServerImpl():base()base() {{ … … }} … …}}
JavaJavapublic class JvnServerImpl public class JvnServerImpl {{ … … private JvnServerImpl {private JvnServerImpl { super();super(); … … }} … …}}
38. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresOpérateur: DestructeurOpérateur: Destructeur
Implémenter les actions nécessaire pour Implémenter les actions nécessaire pour détruire une instance de la classedétruire une instance de la classe
Le même nom que la classe, précédé du Le même nom que la classe, précédé du caractère ~caractère ~
Ne peut pas être appelé directementNe peut pas être appelé directement
public class JvnServerImpl {public class JvnServerImpl { … … private private ~~JvnServerImpl() {JvnServerImpl() { … … }} … …}}
39. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresPropriétésPropriétés
C#C#public class JvnCoordImpl {public class JvnCoordImpl {
private int identification;private int identification;public int Identification {public int Identification {
getget { return { return identification; }identification; }
setset { identification = { identification = value; }value; }}}
}}
JvnCoordImpl coord = new JvnCoordImpl coord = new JvnCoordImpl();JvnCoordImpl();
int id = int id = coord.Identificationcoord.Identification; //get; //getcoord.Identificationcoord.Identification = id + 1; //set = id + 1; //setcoord.Identifecationcoord.Identifecation += 1; //get / set += 1; //get / set
JavaJavapublic class JvnCoordImpl {public class JvnCoordImpl {
private int identification;private int identification;public int public int getId()getId() { { return identification;return identification;}}
public void public void setId(int id)setId(int id) { {this.id = id;this.id = id;
}}……
}}JvnCoordImpl coord = new JvnCoordImpl coord = new
JvnCoordImpl();JvnCoordImpl();int id = coordint id = coord..getId()getId();;coord.coord.setId(id + 1)setId(id + 1);;
• 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
40. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresIndexeursIndexeurs
Un indexeur permet à une instance d’être un tableau Un indexeur permet à une instance d’être un tableau virtuelvirtuel
Peut être surchargéPeut être surchargé (i.e. (i.e. indexé parindexé par intint et par et par stringstring)) Peut être Peut être read-only, write-only read-only, write-only ouou read/write read/write
public class ListBox: Control { private string[] items; public string this[int index] { get { return items[index]; } set { items[index] = value;} }}
ListBox listBox = new ListBox();listBox[0] = "hello";Console.WriteLine(listBox[0]);
41. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresEvènementsEvènements
C# supporte les évènementsC# supporte les évènements Basé sur la notion de déléguéBasé sur la notion de délégué L’émetteur de l’événement, défini le déléguéL’émetteur de l’événement, défini le délégué Les clients de l’évènement enregistrent le Les clients de l’évènement enregistrent le
traitement à associer à l’évènementtraitement à associer à l’évènement Appel de Appel de +=+= et de et de -=-= sur les délégués sur les délégués Il ne peuvent pas créer les évènementsIl ne peuvent pas créer les évènements
Les délégués multicast permettent à plusieurs Les délégués multicast permettent à plusieurs objets de s’enregistrer pour le même objets de s’enregistrer pour le même évènementévènement
42. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
MembresMembresEvènementsEvènements
C#C#class Ircclass Irc
{{
……
Button read_button = new Button();Button read_button = new Button();
read_button.Text = “read”);read_button.Text = “read”);
read_button .Click += new read_button .Click += new
System.EventHandler(this.read_Click);System.EventHandler(this.read_Click);
……
private void read_Click(object serder, EventArgs e) private void read_Click(object serder, EventArgs e)
{{
……
}}
……
}}
JavaJavapublic class Irc{ … Button read_button = new Button(“read”) read_button.addActionListener
(new readListener(this)); …}
class readListener implements ActionListener { … public void actionPerformed (ActionEvent e) { … }}
• Exemple
43. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions Instructions SurvolSurvol
ExpressionsExpressions checked, uncheckedchecked, unchecked locklock usingusing
ConditionnelsConditionnels ifif SwitchSwitch
Boucles Boucles whilewhile dodo forfor foreachforeach
Sauts Sauts breakbreak continuecontinue gotogoto returnreturn throwthrow
ExceptionsExceptions trytry throwthrow
44. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
InstructionsInstructionsThreads: synchronisationThreads: synchronisation
LockLock Exclusion mutuelleExclusion mutuelle Mis en oeuvre à l’aide de la classe Mis en oeuvre à l’aide de la classe System.Threading.Monitor(Wait(),PulseAll(),System.Threading.Monitor(Wait(),PulseAll(),Pulse())Pulse())
public class CheckingAccount { decimal balance; public void Deposit(decimal amount) { lock (this) { balance += amount; } } public void Withdraw(decimal amount) { lock (this) { balance -= amount; } } }
45. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions Instructions checkedchecked et et uncheckedunchecked
Les instructions checked et unchecked Les instructions checked et unchecked permettent de contrôler le débordement permettent de contrôler le débordement dans les expressions arithmétique et les dans les expressions arithmétique et les affectationsaffectations checked force le contrôlechecked force le contrôle unchecked supprime le contrôleunchecked supprime le contrôle
Le mode par défaut est uncheckedLe mode par défaut est unchecked
L’utilisation de la directive L’utilisation de la directive /checked/checked du du compilateur permet d’utiliser le mode compilateur permet d’utiliser le mode checked par défautchecked par défaut
46. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Instructions Instructions checkedchecked et et uncheckedunchecked
using System; using System; class CheckedTestclass CheckedTest{{
public static void Main()public static void Main(){{
int num = 5000; int num = 5000; /* OVERFLOW I *//* OVERFLOW I */byte a = (byte) num; /* overflow detected only if /checked compiler option on */byte a = (byte) num; /* overflow detected only if /checked compiler option on *//* OVERFLOW II *//* OVERFLOW II */checkedchecked{{
byte b = (byte) num; /* overflow ALWAYS detected */ byte b = (byte) num; /* overflow ALWAYS detected */ }}/* OVERFLOW III *//* OVERFLOW III */uncheckedunchecked{{
byte c = (byte) num; /* overflow NEVER detected */ byte c = (byte) num; /* overflow NEVER detected */ }}
}//Main}//Main}}
47. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
InstructionsInstructions ExceptionsExceptions
C#C#public static JvnServerImpl JvnGetServer() {public static JvnServerImpl JvnGetServer() {
try {try {
……
}}
catch {catch {
……
}}
finally {finally {
……
}}
}}
JavaJavapublic static JvnServerImpl public static JvnServerImpl
JvnGetServer() JvnGetServer() throws throws
RemoteException{RemoteException{try {try {
……}}catch {catch {
……}}finally {finally {
……}}
}}
48. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Notions Notions complémentairescomplémentaires
Classes et structuresClasses et structures Boxing et unboxingBoxing et unboxing AttributsAttributs Commentaires en XMLCommentaires en XML
49. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Classes et StructuresClasses et StructuresDifférencesDifférences
ClassClass StructureStructure
Type référence Type référence Type valeurType valeur
Hérite les types Hérite les types références non-références non-sealeds sealeds
Ne support pas l’héritageNe support pas l’héritage
Peut définir le Peut définir le constructeur sans constructeur sans paramètreparamètre
Pas de constructeur sans Pas de constructeur sans paramètre défini par paramètre défini par l’utilisateurl’utilisateur
50. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Classes et StructuresClasses et StructuresSimilaritésSimilarités
ChacuneChacune Est un type défini par l’utilisateurEst un type défini par l’utilisateur Peut implémenter plusieurs interfacesPeut implémenter plusieurs interfaces Peut contenirPeut contenir
DonnéesDonnées Champs, constantes, événements, tableauxChamps, constantes, événements, tableaux
FonctionsFonctions Méthodes, propriétés, indexeurs, opérateurs, Méthodes, propriétés, indexeurs, opérateurs,
constructeursconstructeurs Définition de typesDéfinition de types
Classes, structures, énumérations, interfaces, déléguésClasses, structures, énumérations, interfaces, délégués
51. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Classes et StructuresClasses et StructuresExemple Exemple
struct SPoint { int x, y; ... } class CPoint { int x, y; ... }
SPoint sp = new SPoint(10, 20);CPoint cp = new CPoint(10, 20);
10
20spsp
cpcp
10
20
CPoint
52. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Boxing et unboxingBoxing et unboxing
Boxing: type primitif(valeur) -> Boxing: type primitif(valeur) -> object(référence)object(référence)
UnBoxing:Opération inverse du boxingUnBoxing:Opération inverse du boxing
int i = 123;
object o = i;
int j = (int)o;
123i
o
123j123
System.Int32
53. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Les attributsLes attributs Un moyen d’insérer des annotations(i.e méta-Un moyen d’insérer des annotations(i.e méta-
données)données) Un moyen de fournir des informations au Un moyen de fournir des informations au
runtime dans le but d’exécuter des tâches runtime dans le but d’exécuter des tâches additionnelles ou d’étendre les caractéristiques additionnelles ou d’étendre les caractéristiques d’un type donné.d’un type donné.
Exemple:Exemple: [MethodImpl(MethodImplOptions.Synchronized)]: Similaire au mot-clé [MethodImpl(MethodImplOptions.Synchronized)]: Similaire au mot-clé
synchronized de Java.synchronized de Java. [Serializable]: Similaire à l'implémentation de l'interface java.io.Serializable de [Serializable]: Similaire à l'implémentation de l'interface java.io.Serializable de
Java.Java.
Peut créer ses propres attributs de Runtime en Peut créer ses propres attributs de Runtime en sous-classant System.Attributesous-classant System.Attribute
54. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
CommentairesCommentaires en XML en XML C# donne la possibilité de produire de la C# donne la possibilité de produire de la
documentation en lien avec le code documentation en lien avec le code compilécompilé
C# permet d’écrire ces commentaires en C# permet d’écrire ces commentaires en XMLXML Début du commentaire : Début du commentaire : //////
Un document XML est généré lors de la Un document XML est généré lors de la compilation du code avec l’argument compilation du code avec l’argument /doc/doc
55. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remotingplanplan
IntroductionIntroduction Base du .NET RemotingBase du .NET Remoting MarshallingMarshalling Client activatedClient activated Server activatedServer activated ConfigurationConfiguration
56. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET RemotingIntroductionIntroduction
Infrastructure de l’architecture .NETInfrastructure de l’architecture .NET Motivation: Motivation: Invocation des méthodes sur Invocation des méthodes sur
des objets distantsdes objets distants Ressemble à Java RMIRessemble à Java RMI
57. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remoting Base du .NET RemotingBase du .NET Remoting
Terminologie - Terminologie - ArchitectureArchitecture ChannelsChannels
Deux Transports standard- Deux Transports standard- http:// ou tcp://http:// ou tcp://
Http:// - fonctionne avec Http:// - fonctionne avec les firewallsles firewalls
Tcp:// - “high speed”, Tcp:// - “high speed”, format binaireformat binaire
FormattersFormatters Transformer les Messages Transformer les Messages
en Streamen Stream BinaireBinaire Soap 1.1 “Compliant”Soap 1.1 “Compliant” PersonnaliséPersonnalisé Messages
58. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting .NET Remoting MarshallingMarshalling
Marshall by ReferenceMarshall by Reference Dérive de : Dérive de :
System.MarshalByRefObjeSystem.MarshalByRefObjectct
Accessible via des ProxyAccessible via des Proxy L’objet reste sur le L’objet reste sur le
serveurserveur
Marshall by ValueMarshall by Value Les objets sont sérialisésLes objets sont sérialisés
Attribute [Serializable] Attribute [Serializable] Implement ISerializableImplement ISerializable
L’objet est recopié vers le L’objet est recopié vers le clientclient
59. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remoting Client ActivatedClient Activated
Créé par le ClientCréé par le Client Le Client contrôleLe Client contrôle
la durée de viela durée de vie Lease : bailLease : bail
60. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remoting Server ActivatedServer Activated
Le serveur est responsable de la Le serveur est responsable de la durée de vie de l’objetdurée de vie de l’objet
ConfigurationConfiguration<wellknown <wellknown mode=“mode=“SingleCallSingleCall” ou ” ou
““SingletonSingleton””type=“type,assembly”type=“type,assembly”objectUri=“myobject” />objectUri=“myobject” />
ProgrammationProgrammation Créer un Type WellknownCréer un Type Wellknown Enregistrer sur le serveurEnregistrer sur le serveur
61. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remoting Configuration par fichierConfiguration par fichier
Fichier de configurationFichier de configuration<configuration><configuration><System.Runtime.Remoting><System.Runtime.Remoting>
<application><application> <service><service>
<wellknown mode=“Singleton” <wellknown mode=“Singleton”
type=“Namespace.Class,Assembly” type=“Namespace.Class,Assembly” objectUri=“URI”/>objectUri=“URI”/>
</service></service>
Méthode : Méthode : RemotingConfiguration.RemotingConfiguration.Configure(“config file”)Configure(“config file”)
La Méthode fonctionne coté serveur et coté La Méthode fonctionne coté serveur et coté clientclient
62. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remoting Configuration DynamiqueConfiguration Dynamique
Cache les informations de Cache les informations de configuration aux utilisateursconfiguration aux utilisateurs
Facile a déployerFacile a déployer Nécessite une recompilation à Nécessite une recompilation à
chaque modification du chaque modification du paramétrage…paramétrage…
63. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remotingobjet distribuéobjet distribué
public class ServiceClass : MarshalByRefObjectpublic class ServiceClass : MarshalByRefObject{{
private DateTime starttime;private DateTime starttime;
public ServiceClass()public ServiceClass(){{
Console.WriteLine("A ServiceClass has been created.");Console.WriteLine("A ServiceClass has been created.");starttime = DateTime.Now;starttime = DateTime.Now;
}}
~ServiceClass()~ServiceClass(){{
Console.WriteLine("This object is being collected after " + (new Console.WriteLine("This object is being collected after " + (new TimeSpan(DateTime.Now.Ticks - starttime.Ticks)).ToString() + " seconds."); TimeSpan(DateTime.Now.Ticks - starttime.Ticks)).ToString() + " seconds."); }}
public DateTime GetServerTime()public DateTime GetServerTime(){{
Console.WriteLine("Time requested by a client.");Console.WriteLine("Time requested by a client.");return DateTime.Now;return DateTime.Now;
}}
}}
64. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET RemotingCoté serveurCoté serveur
using System;using System;using System.Diagnostics;using System.Diagnostics;using System.Runtime.Remoting;using System.Runtime.Remoting;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels;using System.Runtime.Remoting.Channels.Tcp;using System.Runtime.Remoting.Channels.Tcp;
public class ServerProcesspublic class ServerProcess{{
public static void Main(string[] Args)public static void Main(string[] Args){{
RemotingConfiguration.Configure("server.exe.config");RemotingConfiguration.Configure("server.exe.config");Console.WriteLine("Press enter to stop this process.");Console.WriteLine("Press enter to stop this process.");Console.ReadLine();Console.ReadLine();
}}
}}
65. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET RemotingCoté clientCoté client
using System;using System;using System.Runtime.Remoting;using System.Runtime.Remoting;
public class Clientpublic class Client{{
public static void Main(string[] Args)public static void Main(string[] Args){{
RemotingConfiguration.Configure("Client.exe.config");RemotingConfiguration.Configure("Client.exe.config");ServiceClass service = new ServiceClass();ServiceClass service = new ServiceClass();Console.WriteLine(service.GetServerTime()); Console.WriteLine(service.GetServerTime());
}}}}
66. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remotingconfiguration de serveurconfiguration de serveur
<configuration><configuration> <system.runtime.remoting><system.runtime.remoting> <application><application> <service><service> <wellknown mode="<wellknown mode="SingleCallSingleCall" " type="ServiceClass, ServiceClass" type="ServiceClass, ServiceClass" objectUri="objectUri="RemoteObjectRemoteObject" " />/> </service></service> <channels><channels> <channel port="<channel port="80808080" ref="" ref="httphttp" />" /> </channels></channels> </application></application> </system.runtime.remoting></system.runtime.remoting></configuration></configuration>
67. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET Remotingconfiguration de clientconfiguration de client
<configuration><configuration> <system.runtime.remoting><system.runtime.remoting> <application><application>
<client><client> <wellknown <wellknown type="type="ServiceClass, ServiceClassServiceClass, ServiceClass"" url="url="http://localhost:8080/RemoteObjecthttp://localhost:8080/RemoteObject"" />/> </client></client>
<channels><channels> <channel ref="<channel ref="httphttp">"> <clientProviders><clientProviders> <formatter ref="<formatter ref="soapsoap"/>"/> <provider ref="propsetter" username="bob" <provider ref="propsetter" username="bob"
writeToConsole="true">writeToConsole="true">domain="hello" />domain="hello" />
</provider></provider> </clientProviders></clientProviders> </channel></channel> </channels></channels>
</application></application><debug loadTypes="true" /><debug loadTypes="true" /> </system.runtime.remoting></system.runtime.remoting></configuration></configuration>
Declaration d‘un point de terminaison de type
singleton
Canal associé avec application
Encodeur de format associé avec un canal
68. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
.NET Remoting.NET RemotingDemoDemo
ExempleExemple
ServerServer
ClientClient
69. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying
Quelques ressourcesQuelques ressources
http://msdn.microsoft.comhttp://msdn.microsoft.com http://windows.oreilly.com/news/http://windows.oreilly.com/news/
hejlsberg_0800.htmlhejlsberg_0800.html http://www.csharphelp.com/http://www.csharphelp.com/ http://www.csharp-station.com/http://www.csharp-station.com/ http://www.csharpindex.com/http://www.csharpindex.com/ http://msdn.microsoft.com/msdnmag/http://msdn.microsoft.com/msdnmag/
issues/0900/csharp/csharp.aspissues/0900/csharp/csharp.asp http://www.hitmill.com/programming/dotNET/http://www.hitmill.com/programming/dotNET/
csharp.htmlcsharp.html http://www.c-sharpcorner.com/http://www.c-sharpcorner.com/ http://msdn.microsoft.com/library/http://msdn.microsoft.com/library/
default.asp?URL=/library/default.asp?URL=/library/dotnet/dotnet/
csspec/csspec/vclrfcsharpspec_Start.htmvclrfcsharpspec_Start.htm