2009-06-24 5 views
1

Я попытаюсь объяснить, что именно я хочу достичь в первую очередь.C# Клиент для обмена сообщениями

Представьте, что два пользователя используют приложение форм Windows, когда пользователь A открывает конкретную форму, блокировка применяется к записи данных, лежащей в основе формы, чтобы только тот пользователь мог вносить изменения в это время.

Пользователь B имеет список всех записей (в сетке), который среди других содержит ссылку на запись, уже открытую пользователем A. То, что мы хотим сделать, - это когда пользователь A открывает записи. Список записей пользователя B обновлен, чтобы показать значок блокировки рядом со строкой, чтобы указать, что запись используется.

Это тривиальный пример того, что мы делаем с обменом сообщениями, но вы получаете идею, Пользователь А делает то, что должен знать пользователь B.

Я реализовал систему, использующую Jabber-net для C# и OpenFire Jabber Server. В основном, когда сообщение должно быть отправлено, новая строка вставляется в таблицу сообщений в базе данных. Таблица сообщений просматривается клиентом службы с использованием объекта SqlDependancy, поэтому, когда новое сообщение готово, служба создает соответствующее сообщение и отправляет его желаемому клиенту через Jabber и сервер OpenFire.

Это работает нормально, однако функция OpenFire из коробки предназначена для поддержки мгновенных сообщений, что, очевидно, не является тем, чего я пытаюсь достичь. Проблема заключается в том, что если пользователь зарегистрирован в двух контекстах приложения (т. Е. В Test and Live), OpenFire не знает, какой из них отправлять сообщение, потому что структура JID пользователя @ server/resource не обращает внимания на ресурс.

По существу, я использую OpenFire и Jabber-net в принципе не совсем правильно.

Есть ли шаблон, который я могу использовать для достижения того, чего хочу достичь, то есть отправить сообщение клиенту, говоря ему что-то сделать, в то же время указывая, какой клиент вы отправляете сообщение. XMPP казался ответом, потому что я могу создавать собственные типы сообщений для анализа.

Мое приложение - это приложение Windows Forms, .NET 3.5 C#.

+0

Лично это звучит как прекрасный выбор и одноразовый выбор. – kenny

ответ

0

Я просто добавлю несколько данных, чтобы указать, какой контекст приложения затронут, и другие клиенты решают, нужно ли им обрабатывать сообщение или нет.

+0

Да, я уже думал об этом, он просто чувствовал себя немного обманом. Я вполне мог бы это сделать, мне просто было интересно узнать, какие у него есть другие варианты. – MrEdmundo

 Смежные вопросы

  • Нет связанных вопросов^_^