Question

Devrais-je utiliser des tubes nommés ou .NET Remoting pour communiquer avec un processus en cours d'exécution sur ma machine?

Était-ce utile?

La solution

WCF est le meilleur choix. Il prend en charge un certain nombre de mécanismes de transport différents (< a href = "http://blogs.charteris.com/blogs/chrisdi/archive/2008/05/19/exploring-the-wcf-named-pipe-binding-part-1.aspx" rel = "noreferrer"> dont Nommé Pipes ) et peut être entièrement piloté par la configuration. Je vous recommande vivement de jeter un coup d'œil à la WCF.

Voici un blog qui effectue une comparaison de performances entre WCF et Remoting .

Citation du blog:

  

Les performances de WCF et de .NET Remoting sont vraiment comparables. Les différences sont si petites (mesure de la latence du client) que peu importe laquelle est la plus rapide. WCF a cependant un débit de serveur bien supérieur à celui de .NET Remoting. Si je voulais commencer un nouveau projet, je choisirais la WCF. Quoi qu'il en soit, la WCF fait bien plus que la communication à distance et, pour toutes ces fonctionnalités, j'adore.

Section MSDN pour WCF

Autres conseils

S'il s'agit d'un seul ordinateur, Named Pipes vous offre de meilleures performances et peut être implémenté avec le remoting. infrastructure ainsi que WCF. Vous pouvez également utiliser directement le système. .IO.Pipes .

Si vous parlez de communication inter-processus, j’ai utilisé .NET Remoting sans aucun problème jusqu’à présent. Si les deux processus se trouvent sur le même ordinateur, la communication est assez rapide.

Les tubes nommés sont certes plus efficaces, mais ils nécessitent au moins la conception d’un protocole d’application de base, ce qui pourrait ne pas être réalisable. La communication à distance vous permet d’appeler facilement des méthodes distantes.

Remoting dans .NET Framework 2.0 fournit le canal IPC pour la communication interprocessus au sein du même ordinateur.

Si vous utilisez .NET Framework 3.0 ou supérieur, j'utiliserais WCF. En utilisant WCF, vous pouvez utiliser différentes liaisons en fonction du compromis entre performance / interop / etc. que vous avez besoin.

Si les performances ne sont pas critiques et que vous avez besoin d'interopérabilité avec d'autres technologies de service Web, vous souhaiterez utiliser la liaison WS-HTTP. Dans votre cas, vous pouvez utiliser WCF avec une liaison net-tcp ou avec une liaison nommée. Soit devrait travailler.

Mon point de vue personnel est que l’approche WCF est plus propre, car vous pouvez offrir des services basés sur le contrat et vous 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 sur le réseau, car de nombreuses informations sémantiques sont perdues ou ne sont pas claires. Lorsque vous ne faites qu’envoyer un message comme 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.

WCF offre également une flexibilité. En modifiant simplement une configuration (liaison), vous pouvez avoir le même service sur une autre machine au lieu de IPC sur la même machine. Par conséquent, votre code reste flexible.

.Net remoting n'est pas un protocole en soi. Il vous permet de choisir le protocole à utiliser: SOAP, tubes nommés, etc.

La communication à distance .net est intégrée à .net pour la communication de processus interne. Si vous l'utilisez, ils continueront à le prendre en charge et éventuellement à l'améliorer dans les versions futures. Les canaux nommés ne vous promettent pas d’améliorations dans les futures versions de .net

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top