Я попытаюсь объяснить, что именно я хочу достичь в первую очередь.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#.
Лично это звучит как прекрасный выбор и одноразовый выбор. – kenny