2010-06-28 4 views
2

Quelle est la meilleure façon de transmettre des données d'une application .NET à une autre lors de l'exécution? Fondamentalement, j'ai besoin de transférer 10-100 kilo-octets de données en quelques minutes d'une application à l'autre (localement) et obtenir une réponse pour cette action.Transmission de données d'une application .NET à une autre

Idéalement - possibilité de se connecter à des événements dans une autre application, et possibilité d'appeler des méthodes de classes dans une autre application.

Merci!

Répondre

9

Puisque vous faites cela dans .NET, je recommande fortement de regarder dans Windows Communication Foundation.

Il prendra soin de l'infrastructure (et a l'avantage de vous permettre de facilement reconfigurer pour ne pas exiger que les deux applications soient locales, si vos besoins changent). "Passing data" sera très évident une fois que vous commencerez à lire sur WCF. Voici un article décrivant comment gérer callbacks and events in WCF, ainsi.

+0

désolé pour ma réponse, je n'ai pas vu le vôtre –

4

Dans le passé, je vous aurais dit .NET Remoting, mais maintenant avec WCF il est plus facile:

http://msdn.microsoft.com/en-us/library/aa730857.aspx#netremotewcf_topic7

+0

Je remets en question la valeur de confondre l'OP avec une comparaison entre les anciennes technologies et les nouvelles, car il n'utilise pas l'un d'eux. –

+0

Je ne sais pas ce qu'il utilise. Remoting aurait été le choix évident avant la WCF, et je le mentionne simplement parce que WCF est beaucoup plus qu'un remplacement à distance. –

3

Je suis d'accord avec l'utilisation de WCF pour votre scénario, car il n'y a pas beaucoup de données à transférer .

Puisque vous parlez d'IPC, vous pouvez également utiliser la signalisation et la mémoire partagée. J'ai un blog post comparant WCF à l'utilisation de la mémoire partagée (en termes de vitesse). En utilisant EventWaitHandle, il est facile de déclencher des événements entre les processus sur la même machine, et le code est assez trivial. Avec WCF, vous devez configurer un service Duplex afin d'obtenir des événements dans les deux sens. À mon avis, même à distance est plus facile à mettre en place quand il s'agit de faire des événements entre les processus. Mais si vous avez besoin d'une manipulation entre machines, utilisez WCF.

0

WCF a été introduit dans .NET 3.0, donc si vous utilisez cela ou plus tard, je le recommande fortement. Il est très facile à installer et ils ont quelques vidéos rapides pour vous aider à aller sur le site MSDN: http://msdn.microsoft.com/en-us/netframework/first-steps-with-wcf.aspx

Il vous donne également la possibilité de configurer « Endpoints » pour vous automatiquement (une fois configuré) permet la communication via TCP, HTTP,

Questions connexes