Le .
Net Remoting
RPC EN [Link]
Pr [Link]
LE .NET REMOTING
RPC en [Link] = le .NET Remoting
Pr M. Bendahmane
Application distribuée ?
Application qui, suivant les principes de l'architecture client-
serveur, peut tourner de façon transparente sur plusieurs
ordinateurs reliés en réseau.
1
LE .NET REMOTING
Remoting .NET ?
o Le remoting .NET est la dernière technologie en matière
Pr M. Bendahmane
d'applications distribuées.
Explication :
o Dans le domaine des applications client serveur, il y a eu
une constante évolution.
o Parmi les "anciens" concepts on peut citer CORBA, COM+,
Java RMI ou plus, dernièrement les Web Services.
LE .NET REMOTING
A la différence des Web Services, le .NET remoting n'est pas
Pr M. Bendahmane
obligé d'utiliser le protocole SOAP pour communiquer. Il peut
utiliser n'importe quel type de protocole.
L'avantage du .NET remoting réside dans la flexibilité du transfert
(HTTP ou TCP sont proposés d'office par .NET)
Par contre si l'on recherche avant tout l'interopérabilité, on se
tournera plutôt vers les Web Services.
2
LE .NET REMOTING
Pr M. Bendahmane
L'utilisation principale en remoting sera donc la distribution
d'objets .NET.
Il n'y a pas qu'une seule façon de faire du remoting aussi le choix
final d'implémentation dépendra de vos besoins.
PRINCIPE
Pr M. Bendahmane
3
Principe
Le proxy défini sur le schéma est une couche intermédiaire créée dynamiquement
par le framework et qui se charge du routage des demandes du client vers le
Pr M. Bendahmane
serveur sur le réseau et inversement de récupérer les réponses du serveur.
Donc, lorsque vous réaliserez des appels distants, vous ne dialoguerez pas
directement avec le serveur mais avec le proxy(Middleware).
PRINCIPE
Le marshalling et unmarshalling des données correspondent aux
Pr M. Bendahmane
principes de transformation de données pour qu'elles puissent
circuler sur un réseau selon un protocole et un format définis.
Ces processus interviennent autant du côté du client que du côté du
serveur dés qu'il y a réception ou envoi de données.
4
LES ÉLÉMENTS
Un système remoting comporte 3 éléments :
un serveur
Pr M. Bendahmane
un client
une interface qui sera commune au client et au serveur :
c'est dans cette interface que l'on définit les types et les
méthodes qui seront délivrées par le serveur. Sans cette
interface, la communication entre le client et le serveur est
impossible.
COMMENT DÉMARRER LE SERVEUR ?
Créons une classe RemotingServer, avec une méthode qui
"démarre" le serveur. Il faut spécifier plusieurs choses dans
Pr M. Bendahmane
cette méthode :
le canal de transmission, et quel protocole il utilise (HTTP,
TCP etc...)
le port du canal (éviter le port 80)
le mode de transmission des données (il y a deux choix
possible : Singleton ou SingleCall)
10
5
COMMENT DÉMARRER LE SERVEUR ?
Singleton : Un seul objet est partagé entre les clients et les appels
Pr M. Bendahmane
pendant une durée de vie fixée. Lorsque la durée de vie est expirée,
l'objet est réinstancié.
SingleCall : à chaque appel, le serveur crée une nouvelle instance
de l'objet qui est détruit après chaque utilisation.
11
COMMENT DÉMARRER LE SERVEUR ?
Pour ouvrir un canal en mode TCP sur le port '1234‘, la syntaxe
est :
Pr M. Bendahmane
Dim chnl As New [Link](1234)
puis
[Link](chnl, false)
Pour publier l’objet à distribuer, la syntaxe est :
[Link](GetType(
Nom de la classe ), "Nom
Nom de la classe",
classe
[Link])
12
6
COMMENT DÉMARRER LE SERVEUR ?
Sans oublier d’importer les packages :
Imports [Link]
Pr M. Bendahmane
Imports [Link]
Imports [Link]
Imports ……(le projet contenant l’interface)
13
COMMENT DÉMARRER LE SERVEUR ?
Il nous suffit de mettre un code qui démarre le serveur et
attends des instructions dans un nouveau module :
Pr M. Bendahmane
14
7
LE CLIENT ?
Il faut d’abord importer les packages :
Imports [Link]
Pr M. Bendahmane
Imports [Link]
Imports [Link]
Imports IRemote(le projet contenant l’interface)
Puis nous déclarons un objet de la classe à distribuer en utilisant
l’interface
Public x As “le nom de l’interface”
15
LE CLIENT ?
Pour enregistrer le canal en mode TCP sur le même port (1234)
que le serveur, la syntaxe est :
Pr M. Bendahmane
Dim myChnl As new TcpChannel()
puis
[Link](myChnl,False)
On doit alors prendre la référence sur le serveur,la syntaxe est :
x= [Link](GetType(le nom de l’interface),
"tcp://nom de la machine: le port/la classe à distribuer")
16