vendredi 14 mai 2010

Microsoft .net Remoting

SOMMAIRE:
  1. Qu’est-ce qu’un système/Application Distribuée
  2. C’est quoi.net Remoting?
  3. Architecture.Net Remoting
  4. Les Objets en .NET Remoting
  5. Exemple Illustratif (Étapes de Développement)
  6. Conclusion


I-Qu’est-ce qu’un système/Application Distribuée :

Système Distribué: c’est système composé d’un ensemble de processus faiblement couplés
connectés par un réseau de communication.

Application distribuée:Application qui suit les principes de l'architecture client-serveur, et peut tourner de façon transparente sur plusieurs ordinateurs reliés en réseau.

II-C’est quoi.net Remoting?

*.Net Remoting est une technologie Microsoft permettant l’implémentation d’applications distribuées , elle est comparable a RMI de java.

*Offre une structure riche et extensible permettant à des objets existant dans différents domaines d'applications, différents processus et sur différentes machines de communiquer sans problème.

*Propose un modèle de programmation à la fois très simple et puissant ainsi q' une prise en charge Runtime rendant ces interactions transparentes (Abstraction de la notion de sockets).

*Le principe général de .Net Remoting est d'exposer sur une partie serveur des objets accessibles par des clients distants en utilisantdes Différent protocoles tel que TCP/Binaire et http/Soap.


III-Architecture.Net Remoting:


Dans une architecture Remoting on trouve principalement:

Serveur:il s’agira de l’application qui héberge l’objet distribué.

Client:il s'agira de l’application qui appellera à distance l'objet Distribué situé sur le serveur.

L'interface:elle contiendra la déclaration des méthodes de l'objet distribué.

Le proxy : c’est une couche intermédiaire créée Dynamiquement par le framework et qui se
charge du routage des demandes du client vers le serveur sur le réseau et inversement de récupérer les réponses du serveur. Donc, lorsque on Réalise des appels distants, on ne dialogue pas directement avec le serveur mais avec le proxy

IV-Les Objets .NET Remoting:

-En .Net Remoting Les objets ou leur référence pourront transiter via le réseau grâce au principe du marshalling (empaquetage).

-Les protocoles et formatages possibles sont paramétrables : TCP+Binaire ou Http+Soap par exemple.

-Par défaut, le framework .NET propose Tcpet Http, mais la technologie .NET Remoting permet à des éditeurs tiers de réaliser leurs propres implémentations et rend donc .NET Remoting potentiellement ouvert.

-En remoting, on ne peut communiquer que des objets dits "Serialisables". Autrement dit, ceux qui implémentent l'interface ISerializable.

-La sérialisation est le processus qui permet de transformer l'objet en un format commun, et communicable sur le réseau.

*On peut "servir" (dans le sens publier, mettre à la disponibilité des clients) un objet de deux façons possibles: -Par référence (MarshallByRef) ou (MBR)
-Par valeur (MarshallByValue) ou (MBV)

1-Par référence (MarshallByRef):Les objets vivent sur le serveur, et le client utilise une référence à ces objets. On peut comparer ça à un pointeur sur une variable mais sur le réseau.


2-Par valeur (MarshallByValue): Le client manipule une copie de l'objet qui est sur le serveur. les Clients et serveur ont chacun leur copie et l'utilisent indépendamment.

-Modes D’activation des Objets en .net Remoting
En .NET Remotingon parle plutôt d’activation d’objets que de création d’objets car la création génère l’activation de plusieurs actions avant la disponibilité effective de l’objet.
Il existe trois types d’activation d'objets distants (deux Coté Serveur, et une Coté Client) ,on peut opter pour l'un ou l'autre
en fonction des besoins de Notre application:
Coté Serveur:
-Single call
-Singleton

Coté Client:
-Client Activated Object (CAO)

Mode SingleCall(Activation Coté Serveur):Dans ce mode à chaque appel, le serveur crée une nouvelle instance de l'objet qui est détruit après chaque utilisation.

Mode Singleton(Activation Coté Serveur):
Un seul objet est partagé entre les clients et les appels pendant une durée de vie fixée.Lorsquecette derniereest expirée, l'objet est réinstancié.

CAO (Activation Coté Client):
Dans ce mode l’objet est Activé par le Client = une instance par client
L’instance de l’objet est créée dès l’appel a Activator.CreateInstance() du client.


V Exemple illustratif:

-Les Etapes de Developpementd’une Application d’une .Net Remoting

Dans cet Exemple on va essayer de donner un exemple d’une petite Application Remoting, dont le Serveur offre un Service de Mise En Majuscule

Les Elementsde base:
Une Application Remotingest Composée princialementde:
Une Interface,un Client,et un Serveur

1-Definition de l’interface:Pour que le client ait connaissance des méthodes distantes, une interface contenant leur déclaration doit être distribuée côtéclient et côté serveur. L'objet exposé sur le serveur devra implémenter cette interface.Cette interface sera Donc le seul élément commun entre le serveur et le client

namespace Interface
{
public interface IService
{
string MettreEnMajuscule(string ClientMessage);
}
}


2-Le Serveur:du côté serveur L'objet Distribué exposé sur le serveur devra implémenter MarshalByRefObject,etL’interface du Service Définie Precedement(Iservice).

class Service:MarshalByRefObject,Interface.IService
{
public string MettreEnMajuscule(string ClientMessage)
{
Console.WriteLine("Le serveur a recu la chaine:{0}",ClientMessage);
return ClientMessage.ToUpper();
}

}


on implémente la classe MarshalByRefObject qui indique que le client ne contiendra qu'une référence de l'objet et non l'objet lui-même, une sorte de pointeur de fonction distant. Ce fonctionnement est à opposer à MarshalByValue où une copie complète d'un objet sérialisableest passée au client.

Configuration et lancement du serveur
-Création et Enregistrement d'un nouveau Canal d’Ecoute
-Démarrage de l'écoute en exposant l'objet dans le mode Souhaité

class Program
{
static void Main(string[] args)
{
try
{
TcpChannel channel = new TcpChannel(12345);//creation du canal
ChannelServices.RegisterChannel(channel);//enregistrement du canal

//Exposition de l'objet et demarrage d'ecoute
RemotingConfiguration.RegisterWellKnownServiceType(typeof(Service), "MiseEnMajuscule", WellKnownObjectMode.Singleton);
Console.WriteLine("Serveur en Marche...");
}
catch (Exception ex) { Console.WriteLine(ex.Message); }
finally
{
Console.ReadLine();
}


Ici, nous Avons Creéun nouveau canal(Channel) de type Tcp. Des channels d'autres types pourraient être utilisés comme HttpChannel ou des développements non standards comme IIOPChannel. TcpChannel a l'avantage ici d'être plus rapide que HttpChannel puisque les données transitent en binaire.
-La Configuration peut etreaussi faite a l’aide de la methode.Configure() qui utilse un fichier XML pour charger la configuration
-Cette Alternative est tres utile car on n’est pas obligé de Recompiler le Serveur a chaque fois qu’on desire changer la configuration(Numerode port,Objéexposé,Moded’Exposition…)

3-Le Client:
-Ajouter une reference de l’interface de l’objet distribuéde distribué

-Créer un Canal de communication (Le meme type du canal/Formattage que le Serveur utilise)

-Recuperer la la Reference de l’objet distantde

-Utilisation de la Reference…

static class Program
{

static void Main()
{
Interface.IService RemoteService;
TcpChannel channel = new TcpChannel();
ChannelServices.RegisterChannel(channel);
RemoteService = (Interface.IService)Activator.GetObject(typeof(Interface.IService), "Tcp://127.0.0.1:12345/MiseEnMajuscule");
while (true)
{
Console.WriteLine(RemoteService.MettreEnMajuscule(Console.ReadLine()));
}
}
}


Conclusion

Le .NETRemoting est la dernière technologie en matière d'applications distribuées, Dans le domaine des applications client- serveur, il y a eu une constante évolution. Parmi les "anciens" concepts on peut citer CORBA, COM+, Java RMI ou plus dernièrement les Web Services.
-.NET Remoting est une technologie intéressante pour les applications qui requièrent un couplage fort.C'est-à-dire pour des appels distants qui permettent de disposer de transactions, de levées d'exceptions, et autres principes applicatifs que l'on retrouve dans des développements non distribués, plus conventionnels. Avec le protocole TCP et une communication en binaire, le transport est également plus rapide.


telecharger cet Article sou format Power point : ICI
télécharger l'exemple illustratif: ICI

Aucun commentaire: