2009-06-24 4 views
1

Je vais essayer d'expliquer exactement ce que je veux réaliser en premier. Imaginez que deux utilisateurs utilisent une application Windows Forms, lorsque l'utilisateur A ouvre un formulaire particulier, un verrou est appliqué à l'enregistrement de données sous-jacent au formulaire afin que seul cet utilisateur puisse effectuer des modifications à ce moment-là. L'utilisateur B a une liste de tous les enregistrements (dans une grille) qui contient entre autres une référence à l'enregistrement déjà ouvert par l'utilisateur A. Ce que nous voulons faire est lorsque l'utilisateur A ouvre les enregistrements La liste des enregistrements de l'utilisateur B est mis à jour pour afficher une icône de verrou à côté de la ligne pour indiquer que l'enregistrement est en cours d'utilisation. Ceci est un exemple trivial de ce que nous faisons avec la messagerie mais vous avez l'idée, l'utilisateur A fait quelque chose que l'utilisateur B doit savoir à ce sujet.Messagerie client vers client C#

J'ai implémenté un système utilisant Jabber-net pour C# et un serveur Jabber OpenFire. Fondamentalement, quand un message doit être envoyé, une nouvelle ligne est insérée dans une table de messages dans la base de données. La table des messages est surveillée par un client de service à l'aide de l'objet SqlDependancy, de sorte que lorsqu'un nouveau message est prêt, le service crée le message approprié et l'envoie au client souhaité via Jabber et le serveur OpenFire.

Cela fonctionne bien, mais la fonctionnalité prête à l'emploi d'OpenFire est destinée à la messagerie instantanée, ce qui n'est évidemment pas ce que j'essaie d'obtenir. Le problème que j'ai est que si un utilisateur est connecté à deux contextes d'application (c'est-à-dire Test et Live) OpenFire ne sait pas à qui envoyer un message car la structure JID de l'utilisateur @ serveur/ressource ne tient pas compte de la ressource.

Fondamentalement, la façon dont j'utilise actuellement OpenFire et Jabber-net n'est pas tout à fait raison. Y at-il un modèle que je peux utiliser pour atteindre ce que je veux réaliser, c'est-à-dire envoyer un message à un client lui disant de faire quelque chose, tout en étant capable de spécifier quel client vous envoyez le message aussi. XMPP semblait être la réponse parce que je peux construire mes propres types de messages à analyser.

Mon application est une application Windows Forms, .NET 3.5 C#.

+0

Personnellement, cela ressemble à un choix judicieux et un choix consomptible. – kenny

Répondre

0

Je voudrais juste ajouter plus de données pour indiquer quel contexte d'application est affecté et que les autres clients décident s'ils doivent ou non gérer le message.

+0

Ouais, j'ai déjà pensé à le faire, c'était juste une sorte de triche. Je pourrais bien finir par le faire, j'étais juste intéressé de voir quelles autres options il y a. – MrEdmundo

Questions connexes