Какую технологию / архитектуру mvc3 / c # мы действительно ищем - nservicebus, WCF или что-то еще? - PullRequest
2 голосов
/ 20 октября 2011

Вот что нам нужно сделать.

У нас есть веб-приложение (MVC3), которое позволяет управлять различными объектами.Допустим, «школы», «студенты» и «учителя».

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

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

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

Cheers!

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

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

Клиент -> Опубликовать NServiceBus Msg -> MessageHandler -> Веб-служба

Этот обработчик сообщений даст вам разделение проблемчто вам нужно.

0 голосов
/ 20 октября 2011

Другой поставщик / клиент, которому нужны обновления данных, не зависит от вашего приложения.По крайней мере, не из вашего объяснения.Они зависят от точных данных.Это означает, что ваша проблема связана с данными, а не с приложением.С этой точки зрения решение для данных выглядит привлекательно.

Если вы используете SQL Server, я бы подумал об использовании триггеров в базе данных и инициации там.Если вы хотите полностью разгрузить работу как из базы данных, так и из приложения, то SQL Server Service Broker работает хорошо.

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

...