. Net & C#

69
. Net & C# . Net & C# Chen Shan & Liu Ying Chen Shan & Liu Ying Master 2 pro GI - SRR Master 2 pro GI - SRR 2003-2004 2003-2004

description

. Net & C#. Chen Shan & Liu Ying Master 2 pro GI - SRR 2003-2004. Plan. . NET Introduction Historique .NET Framework C# .NET Remoting. Qu’est ce que .Net?. Une technologie prônée par Microsoft Une nouvelle plate-forme de développement logiciel - PowerPoint PPT Presentation

Transcript of . Net & C#

Page 1: . Net & C#

. Net & C#. Net & C#Chen Shan & Liu YingChen Shan & Liu Ying

Master 2 pro GI - SRRMaster 2 pro GI - SRR2003-20042003-2004

Page 2: . Net & C#

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

Page 3: . Net & C#

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) ……

Page 4: . Net & C#

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 ODBC)Fournisseurs de base de données(Oracle et ODBC) La sécuritéLa sécurité XML/XSLTXML/XSLT ……

Page 5: . Net & C#

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

Page 6: . Net & C#

6. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying

Vue générale de .NetVue générale de .NetCLS ( 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)

OutilsInfrastructure

pour le développement d’application

distribuées

(COM+, .NET Remoting, ASP.NET)

Page 7: . Net & C#

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

Page 8: . Net & C#

8. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying

AssemblagesAssemblages Avantages des assemblagesAvantages des assemblages Structure d’un assemblageStructure d’un assemblage

Page 9: . Net & C#

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

Page 10: . Net & C#

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 assemblageAssemblage

Foo2.netmodule

Métadonnées de type

Code CIL des méthodes des typesRessources (image, sons …)

Foo1.exe Image.jpgManifeste

Ref ver Foo2Ref ver Image.jpg

méthodes des typesCode IL des méthodes des types

Page 11: . Net & C#

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

Page 12: . Net & C#

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

Page 13: . Net & C#

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)

Page 14: . Net & C#

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

Page 15: . Net & C#

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

Page 16: . Net & C#

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, Boolean, les types basiques comme Byte, Boolean,

Object…Object… Les application graphiques (Windows Les application graphiques (Windows

Forms)Forms) System.Windows.FormsSystem.Windows.Forms

ADO.NET et XMLADO.NET et XML

Page 17: . Net & C#

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 ……

Page 18: . Net & C#

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

Page 19: . Net & C#

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

Page 20: . Net & C#

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

Page 21: . Net & C#

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

Page 22: . Net & C#

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"

Page 23: . Net & C#

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

Page 24: . Net & C#

24. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying

TypesTypes Types définis par l’utilisateurTypes définis par l’utilisateur

EnumerationsEnumerations enumenumArraysArrays int[], string[]int[], string[]InterfaceInterface interfaceinterfaceType référenceType référence classclassType valeurType valeur structstructPointeur de Pointeur de fonctionfonction delegatedelegate

Page 25: . Net & C#

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) {

… }

Page 26: . Net & C#

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

Page 27: . Net & C#

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

Page 28: . Net & C#

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

Page 29: . Net & C#

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

Page 30: . Net & C#

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

Page 31: . Net & C#

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

Page 32: . Net & C#

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)

Page 33: . Net & C#

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

Page 34: . Net & C#

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

Page 35: . Net & C#

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)

Page 36: . Net & C#

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

Page 37: . Net & C#

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(); … … }} … …}}

Page 38: . Net & C#

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() { … … }} … …}}

Page 39: . Net & C#

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

Page 40: . Net & C#

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]);

Page 41: . Net & C#

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

Page 42: . Net & C#

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

Page 43: . Net & C#

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

Page 44: . Net & C#

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; } } }

Page 45: . Net & C#

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 dans permettent de contrôler le débordement dans les expressions arithmétique et les 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

Page 46: . Net & C#

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}}

Page 47: . Net & C#

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 {

……}}

}}

Page 48: . Net & C#

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

Page 49: . Net & C#

49. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying

Classes et StructuresClasses et StructuresDifférencesDifférences

ClassClass StructureStructureType 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

Page 50: . Net & C#

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

Page 51: . Net & C#

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

Page 52: . Net & C#

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

Page 53: . Net & C#

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

Page 54: . Net & C#

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

Page 55: . Net & C#

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

Page 56: . Net & C#

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

Page 57: . Net & C#

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

Page 58: . Net & C#

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

Page 59: . Net & C#

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

Page 60: . Net & C#

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

Page 61: . Net & C#

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

Page 62: . Net & C#

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…

Page 63: . Net & C#

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;

}}

}}

Page 64: . Net & C#

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();

}}

}}

Page 65: . Net & C#

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());

}}}}

Page 66: . Net & C#

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>

Page 67: . Net & C#

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

Page 68: . Net & C#

68. NET & C# - Master 2 pro (SRR) Chen Shan & Liu Ying

.NET Remoting.NET RemotingDemoDemo

ExempleExempleServerServerClientClient

Page 69: . Net & C#

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/dotnet/default.asp?URL=/library/dotnet/csspec/vclrfcsharpspec_Start.htmcsspec/vclrfcsharpspec_Start.htm