Как сохранить синхронизацию объектов между клиентами - PullRequest
0 голосов
/ 13 февраля 2012

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

Некоторые подходы, которые я рассмотрел:

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

SQL Service Broker - прошло уже много времени с тех пор, как я посмотрел на это, но я точно помню, что это не тот путь, по которому я хотел идти.

Веб-сервис - вместо того, чтобы приложения каждый обращались к базе данных самостоятельно, я думаю, что иметь веб-сервис, который будет в центре ответственности за формирование бизнес-объектов и их раздачу, было бы частичным исправлением, за исключением того факта, что наши Приложение чисто оконных форм. Но наверняка есть другой способ реализовать это без необходимости реального веб-сервера?

Сокеты - я думал о том, чтобы просто создать службу Windows, которая интегрируется с нашим бизнес-объектом и использует сокеты Windows, чтобы либо: а) просто сказать другим клиентам, что им нужно вызывать базу данных для обновлений, либо б) фактически предоставить клиентам обновления поэтому им не нужно вызывать базу данных.

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

Ответы [ 2 ]

1 голос
/ 13 февраля 2012

Что касается опции вашего веб-сервиса, имейте в виду, что WCF не требует веб-сервера. Все, что ему нужно, это Хост, и вы можете реализовать его самостоятельно тривиально. Этот хост, вероятно, будет службой Windows для ваших нужд.

1 голос
/ 13 февраля 2012

Я не уверен, но вы можете использовать

Наблюдатель - Определите зависимость «один ко многим» между объектами, чтобы при изменении состояния одного объекта все его иждивенцы уведомлялись и обновлялись автоматически.

enter image description here

и реализовать его

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...