81 votes

Quel est le meilleur choix pour la communication interprocessus .NET ?

Dois-je utiliser Named Pipes ou .NET Remoting pour communiquer avec un processus en cours d'exécution sur mon ordinateur ?

58voto

spoon16 Points 17694

La WCF est le meilleur choix. Il supporte un certain nombre de mécanismes de transport différents ( y compris Nommé Tuyaux ) et peut être entièrement piloté par la configuration. Je vous recommande vivement de jeter un coup d'œil à WCF.

Voici un blog qui fait un Comparaison des performances entre WCF et Remoting .

Une citation du blog :

Les performances de WCF et de .NET Remoting sont vraiment comparables. Les différences sont si faibles (en mesurant la latence du client) qu'il importe peu de savoir lequel des deux est un peu plus rapide. WCF a cependant un bien meilleur débit serveur que .NET Remoting. Si je devais commencer un projet complètement nouveau, je choisirais le WCF. De toute façon, WCF fait beaucoup plus que Remoting et pour toutes ces caractéristiques, je l'aime.

Section MSDN pour WCF

15voto

Mark Cidade Points 53945

S'il s'agit d'une machine unique, Named Pipes vous offre de meilleures performances et peut être mis en œuvre avec la fonction infrastructure remoteur ainsi que WCF. Ou vous pouvez juste utiliser directement System.IO.Pipes .

5voto

Dario Solera Points 2804

Si vous voulez parler de communication inter-processus, j'ai utilisé .NET Remoting sans aucun problème jusqu'à présent. Si les deux processus sont sur la même machine, la communication est assez rapide.

Les Named Pipes sont certainement plus efficaces, mais ils nécessitent la conception d'au moins un protocole d'application de base, ce qui n'est pas toujours réalisable. Le remoting vous permet d'invoquer des méthodes distantes en toute simplicité.

3voto

icelava Points 5655

Le remoting dans .NET Framework 2.0 fournit l'accès à l'ensemble des fonctions de l'entreprise. Canal IPC pour la communication inter-processus au sein d'une même machine.

3voto

Jason Olson Points 2752

Si vous utilisez le .NET Framework 3.0 ou supérieur, j'utiliserais WCF. Avec WCF, vous pouvez utiliser différentes liaisons en fonction du compromis entre performances/interopérabilité/etc. dont vous avez besoin.

Si les performances ne sont pas critiques et que vous avez besoin d'interopérabilité avec d'autres technologies de services Web, vous voudrez utiliser la liaison WS-HTTP. Dans votre cas, vous pouvez utiliser WCF avec soit une liaison net-tcp, soit une liaison named-pipe. L'un ou l'autre devrait fonctionner.

Personnellement, je pense que l'approche WCF est plus propre car elle permet de réaliser des services dirigés par contrat et de se concentrer sur les messages et non sur les objets (je fais ici une généralisation basée sur les modèles de programmation par défaut de WCF/.NET Remoting). Je n'aime pas envoyer des objets à travers le fil parce que beaucoup d'informations sémantiques se perdent ou ne sont pas claires. Lorsque tout ce que vous faites est d'envoyer un message comme vous le faites avec WCF, il devient plus facile de séparer vos préoccupations entre la communication et les classes/infrastructures qui composent un seul nœud.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X