janvier
2007
Beaucoup de gens se demande comment faire pour publier un objet tout en gardant sur le serveur une trace de l’instance qui est créé.
La réponse à cette question est simple. C’est impossible en Remoting de créer un objet « normalement » ( c a d avec un simple new ) coté serveur puis de décider de le publier.
Alors comment avoir le contrôle sur l’objet publié depuis le serveur ? Tout simplement en changeant la façon de voir. Il faut se débarrasser de cette impression d’un programme ne peut être que client ou que serveur.
En effet afin de résoudre notre problème nous allons tout simplement récupérer l’objet que l’on souhaite contrôler depuis le serveur, comme si nous étions un client.
ChannelServices.RegisterChannel(tcpChannel, false);
RemotingConfiguration.RegisterWellKnownServiceType(typeof(DataService), objectName, WellKnownObjectMode.Singleton);
this.dataService = (DataService)Activator.GetObject(typeof(DataService), "tcp://localhost:" + port + "/" + objectName);
Il y a deux choses importantes dans le code au dessus :
- Avec cette technique nous sommes obligé d’utiliser le mode Singleton
- Nous ne travaillons pas avec une instance directe mais avec un objet qui passe par un proxy
Cela pose problème. Particulièrement le deuxième point car cela oblige si on veut lui passer des objets en paramètre pour faire des traitements ils doivent soit être [Serializable] soit être MarshalByRefObject.
Je continue de chercher comment contourner cette limitation mais je suis assez spectique au vu de l’architecture du Remoting de .NET.
Archives
- juillet 2012
- mars 2012
- février 2012
- novembre 2011
- octobre 2011
- mars 2011
- novembre 2010
- octobre 2010
- septembre 2010
- août 2010
- avril 2010
- février 2010
- janvier 2010
- novembre 2009
- octobre 2009
- septembre 2009
- juin 2009
- mai 2009
- avril 2009
- mars 2009
- février 2009
- janvier 2009
- décembre 2008
- novembre 2008
- octobre 2008
- septembre 2008
- août 2008
- juin 2008
- mai 2008
- avril 2008
- février 2008
- mai 2007
- avril 2007
- mars 2007
- février 2007
- janvier 2007