OVH Cloud OVH Cloud

remoting c#

3 réponses
Avatar
Xavier
Bonjour,

Voilà j'ai un petit soucis, je dois réaliser une appli client-server en
remoting.
Le principe est simple, le client doit pouvoir lorsqu'il le souhaite envoyer
des calculs à faire au serveur. Il s'agit en fait de calcul partager.
Le serveur ne connait bien sur pas a l'avance les travaux qu'il doit
effectuer pour ensuite renvoyer les resultats au client.
J'aimerai savoir comment on peut faire ca avec .net remoting, j'ai vu qu'il
y avait une histoire de delegate mais dans mon appli, le serveur
ne connait pas a l'avance et n'enregistre pas de service disponible.

merci.

3 réponses

Avatar
VANNESTE Xavier
oula faire un cours sur le remoting dans un post ca risque d'etre dur lol
voici un article sur le remoting.net
http://www.c2i.fr/code.aspx?IDCodeI4

sinon il y a les webservice tres simple d'utilisation
"Xavier" a écrit dans le message de
news:cbbr1e$7sa$
Bonjour,

Voilà j'ai un petit soucis, je dois réaliser une appli client-server en
remoting.
Le principe est simple, le client doit pouvoir lorsqu'il le souhaite


envoyer
des calculs à faire au serveur. Il s'agit en fait de calcul partager.
Le serveur ne connait bien sur pas a l'avance les travaux qu'il doit
effectuer pour ensuite renvoyer les resultats au client.
J'aimerai savoir comment on peut faire ca avec .net remoting, j'ai vu


qu'il
y avait une histoire de delegate mais dans mon appli, le serveur
ne connait pas a l'avance et n'enregistre pas de service disponible.

merci.




Avatar
Arnaud Debaene
Xavier wrote:
Bonjour,

Voilà j'ai un petit soucis, je dois réaliser une appli client-server
en remoting.
Le principe est simple, le client doit pouvoir lorsqu'il le souhaite
envoyer des calculs à faire au serveur. Il s'agit en fait de calcul
partager.
Le serveur ne connait bien sur pas a l'avance les travaux qu'il doit
effectuer pour ensuite renvoyer les resultats au client.


Dans les grandes lignes :
- Tu définis dans une assembly séparée une interface qui déclare les
méthodes, propriétés et événements exposés par ton serveur.
- Dans le serveur, tu écrits une classe qui hérite de MarshalByRef et qui
implémente ton interface.
- Dans le client, tu récupères (c'est la partie la plus délicate) une
instance de ton interface et tu l'utilises pour appeler le serveur.

La partie la plus délicate, c'est de créer l'instance de l'objet serveur et
de la rendre disponible au client. Dans ton cas, il me semble qu'un objet
"well known" singleton serait assez adapté - voire MSDN pour les détails. Le
serveur devrait probablement être un service Windows, à moins que tu puisses
lancer le processus serveur à la main.

J'aimerai savoir comment on peut faire ca avec .net remoting, j'ai vu
qu'il y avait une histoire de delegate


Ben non, pourquoi un delegate?

mais dans mon appli, le serveur
ne connait pas a l'avance et n'enregistre pas de service disponible.


Ce qui veux dire? D'ne manière ou d'une autre, il faudra que:
- le processus serveur soit lancé avant que le client ne s'y connecte
(contrairement à COM, le .NET remoting ne connait pas la notion
d'activation).
- le processus client connaisse l'adresse réseau du serveur (.NET ne propose
ni de système de découverte de service par broadcast, ni de service
d'annuaire pour loaclaiser les serveurs sur un réseau).

Arnaud
MVP - VC
Avatar
Frederic Melantois
Quelques tutoriels complémentaires :

http://samples.gotdotnet.com/quickstart/howto/ section remoting

http://www.codeproject.com/csharp/DotNetRemotingBasicTutor.asp

http://www.dotnet-tech.com/tutoriels/remoting/ tutoriel d'Elise Dupont MVP

Il y a 3 modes dans .NET Remoting :

- Client Activated : l'objet est créé chez le client
- Server Activated in SingleCall : Le client obtient une référence de
l'objet créé par le serveur. Dans ce mode, un objet est créé pour chaque
client. A noter que l'objet est réellement créé non pas à l'instanciation
chez le client mais au premier appel d'une méthode.
- Server Activated in Singleton : La différence avec le précédent mode,
c'est que tous les clients partagent le même objet serveur.

A noter que la durée de vie des objets ont une durée limitée (5 minutes par
défaut).

Dans votre cas, il semble que le mode "Server Activated in SingleCall " soit
le plus approprié.

Frédéric Mélantois