Mécanismes IPC en C# - les usages et les Pratiques Exemplaires
Question
J'ai utilisé de la CIB dans win32 code de tout à l'heure.[Sections critiques, des événements et des sémaphores]
Comment est la scène .NET de l'environnement?Il n'existe aucun tutoriel expliquant toutes les options disponibles et quand les utiliser et pourquoi?
La solution
Microsoft les plus récents sont les choses dans la CIB est Windows Communication Foundation.En fait il n'y a rien de nouveau dans le niveau inférieur (tcp, udp, pipes nommés, etc), Mais WCF simplifie le développement de la CIB grandement.
Ressource utile:
- Communication interprocessus avec WCF sur le DrDobb's portail
- WCF Options de Communication dans le .NET Framework 3.5
et bien sûr MSDN sur WCF
Autres conseils
En dehors de l'évidente (WCF), il y a un ZeroMQ de liaison pour C#/CLR qui est assez bon:
http://www.zeromq.org/bindings:clr
Ne orienté message de la CIB, pub/sub et diverses autres stratégies avec beaucoup moins de code et de configuration de la WCF.
Il est également à moins d'un ordre de grandeur plus rapide que n'importe quoi d'autre et a moins de temps de latence si vous avez besoin d'une faible latence comms.
Avec égards pour les sémaphores, les serrures, les mutex etc.Si vous partagez par la communication plutôt que de communiquer par le partage, vous aurez tout un chargement de moins de tracas que le paradigme traditionnel.
J'ai tendance à utiliser des canaux nommés ou des sockets Unix (selon si je suis cibler MS.NET ou Mono-j'ai une classe qui fait abstraction de loin), car il est facile à utiliser, portable et me permet d'interagir avec du code non managé.Cela dit, si vous êtes seulement à faire avec du code managé, aller avec WCF ou remoting-ceux-ci si vous avez besoin d'Mono support, depuis leur WCF soutien n'est tout simplement pas encore là.
Je vous conseille d'utiliser les Fichiers Mappés en Mémoire si vous avez besoin pour utiliser sur la machine domaine de la communication à travers le réseau.Voir le lien suivant.
http://techmikael.blogspot.com/2010/02/blazing-fast-ipc-in-net-4-wcf-vs.html
Il est également .NET Remoting, que j'ai trouvé assez cool, mais je suppose qu'ils sont obsoleting, maintenant qu'ils ont de la WCF.
On dirait que vous êtes intéressé à des techniques de synchronisation plutôt que de la communication.Si oui, vous pourriez commencer ici, ou peut-être ce plus aperçu concis.