0

Je souhaite créer un système avec plusieurs processus de communication.Interpréter un pub/sous-modèle sur C#, C++ et éventuellement d'autres langages

Le processus maître va déclencher des événements. Il y aura différents événements contenant chacun des données structurées. Deux processus esclaves vont s'abonner aux événements, recevoir les données et appeler les gestionnaires appropriés. Il y a deux considérations à propos de mon cas. 1) Je ne suis pas préoccupé par la sécurité puisqu'il n'y aura pas de services de tiers. 2) Je suis préoccupé par les performances.

Les personnes suggèrent d'utiliser des files d'attente de messages comme Zero MQ dans cette situation. Je suis un peu confus de la façon dont il devrait être mis en œuvre. Autant que j'ai compris ZeroMQ peut seulement envoyer \ recieve des données brutes de chaîne.

Dois-je emballer mes données dans la chaîne (par exemple json ou xml) du côté de l'éditeur, déballer manuellement les données côté abonné et filtrer uniquement les messages nécessaires? S'il y a une meilleure façon d'aborder mon problème, je serais très heureux de l'entendre.

+0

Je n'ai pas beaucoup d'expérience personnelle dans ce domaine, mais j'ai entendu de bonnes choses à propos des tampons de protocole de Google http://code.google.com/p/protobuf /, en particulier dans les situations où les différents processus participants peuvent être écrits dans des langues différentes –

+0

Voir aussi cette question http://stackoverflow.com/questions/475794/how-fast-or-lightweight-is-protocol-buffer qui comprend informations de référence sur l'implémentation .NET des tampons de protocole –

+0

Merci, @KenKeenan Si je comprends bien, les protobuffers ne sont que la manière courante de sérialiser les données dans différentes langues. En d'autres termes, je devrai toujours utiliser ZeroMq et filtrer manuellement les messages nécessaires. Je me demande si c'est la bonne façon de faire le travail –

Répondre

0

Je voudrais utiliser un fournisseur de messagerie pour le scénario que vous avez décrit. Les avantages que je vois sont

1) Ne pas écrire du code pour envoyer des messages aux abonnés. Cela me permet de me concentrer sur ma logique métier et sur le format de données. Je peux décider d'un format de données (XML/JSON/Any format qui convient à mes besoins et est compris par les abonnés) et publier des messages.

2) Si un besoin se présente, le nombre d'abonnés peut être augmenté sans ajouter/modifier de code.

3) Les abonnés peuvent être déplacés vers des machines différentes sans affecter la solution.

4) Les abonnés peuvent également être hors ligne et les maîtres/éditeurs peuvent toujours publier des messages. Les abonnés peuvent entrer plus tard et appeler les gestionnaires requis.

0

Ce sont les options que je vois:

  1. Si la préoccupation est seulement sur la performance, alors que la durabilité et la persistance des événements ne font pas partie des exigences, alors regrouper les données dans la structure de protocole défini personnalisé dans un tableau d'octets et utiliser des sockets pour la communication entre processus. Mais notez - Les structures de tableaux d'octets personnalisés sont chères en termes d'extensibilité et de maintenabilité. L'autre option consiste à choisir JSON comme format d'échange de données, ce qui est relativement plus lisible.
  2. Si la durabilité et la persistance des données d'événement font partie des exigences, profitez des avantages du middleware orienté message. Des fonctionnalités telles que la synchronisation déclarative sont quelques-uns des autres avantages que MOM peut apporter.
Questions connexes