2010-11-19 6 views
2

Je développe quelques applications pour les dispositifs embarqués; ils devraient être compatibles avec Windows CE 5.0 et XP incorporés en utilisant C# 2.0. Les applications doivent échanger de petits messages qui représentent généralement des événements. J'ai implémenté un premier prototype utilisant des sockets TCP et un serveur séparé agissant comme répartiteur (avec un modèle pub/sub). Cela fonctionne, mais je me demande si l'utilisation de MSMQ serait une meilleure solution. Les messages persistants m'aideraient dans quelques scénarios, mais généralement tous les événements devraient être consommés immédiatement par les applications cibles. Je voudrais connaître les avantages et les inconvénients des deux solutions et quelques lignes directrices pour m'aider avec la décision.Systèmes embarqués: Sockets vs MSMQ

Merci

Répondre

3

Eh bien, faire la queue de message est grand pour sa livraison garantie sur une file d'attente transactionnelle. Ce qui aide à rendre votre système résilient aux plantages et aux redémarrages inattendus. Mais cela ne fonctionnera généralement que lorsque vous pourrez redémarrer votre application à partir d'un tel accident et être en mesure de restaurer l'état avant de recommencer à recevoir des messages.

C'est une exigence non triviale. Si vous ne pouvez pas le rencontrer, tous les messages d'état ont tendance à redescendre la machine. Il y a presque toujours un état explicite dans les messages, même si leur contenu n'est pas à état, simplement par l'ordre dans lequel ils sont reçus et ils modifient l'état de votre programme. Cela a été la malédiction pour le middleware, un logiciel qui suppose que la mise en réseau est un détail de mise en œuvre qui peut être extrait loin ne fonctionne pas bien dans la pratique.

Je pensais que this answer à SO exprimait particulièrement bien ce problème.

2

Je serais enclin à extraire une interface et les implémenter tous les deux basés sur l'interface et prendre la décision d'un élément de configuration. Laissez les utilisateurs choisir un protocole en fonction de leurs besoins potentiellement changeants.