2009-11-24 5 views
1

J'ai écrit un récepteur de formatage distant remoting pour une application établie. Le formateur semble fonctionner dans la plupart des cas jusqu'à ce que j'essaie de l'utiliser pour appeler une méthode distante à laquelle je passe un rappel à un CAO. À ce stade, je reçois une exception SerializationException indiquant que j'essaie de sérialiser le CAO, ce qui n'est évidemment pas ce que je veux faire. Le CAO hérite de MBRO et les durées de vie des objets n'entrent pas en jeu à ce stade..NET Remoting - Sérialisation des délégués

Est-ce que quelqu'un sait comment je peux sérialiser le IMessage entrant dans mon formateur de manière à préserver la référence à l'ACO? Je suppose que j'ai besoin de marcher le graphe d'objet, convertissant le CAO en ObjRef qui peut alors être sérialisé mais mon problème est plus fondamental car je n'ai pas de 'Message' concret à sérialiser, seulement un IMessage. Je préférerais ne pas utiliser la réflexion.

Je suis conscient de WCF, mais je ne souhaite pas y migrer à ce stade car l'application est assez grande.

Répondre

1

Il y a un excellent article sur CodeProject qui peuvent vous fournir les answers que vous recherchez. La mise en œuvre d'événements/délégués dans la communication à distance est très délicate et la solution de contournement est également difficile à mettre en œuvre. Le meilleur site pour lire à ce sujet est ce mec, Ingo Rammer qui a écrit et écrit un excellent livre sur l'accès à distance. J'ai utilisé GenuineChannels dans le passé pour contourner l'utilisation de la limitation de gestion d'événements trouvée dans le remoting .NET standard et cela fonctionne. Cependant GenuineChannels semble déjà être en difficulté ...

Espérons que cela aide, Cordialement, Tom.

+0

Merci pour votre réponse. Cependant, mon problème n'est pas d'utiliser l'accès à distance. Il s'agit plutôt de problèmes liés à l'implémentation de mon récepteur de formatage personnalisé lors de la sérialisation d'IMessages contenant des appels de méthodes distants où un ou plusieurs arguments sont délégués à un CAO (c'est-à-dire un rappel au client). J'ai le livre d'Ingo et bien que ce soit une bonne référence, il ne contient pas la réponse à ma question. – Roy