2015-09-18 1 views
2

Упрощенный ... Мы используем NServiceBus для обновления нашего хранилища.NServiceBus и WCF, как они ладят?

В наших сагах мы сначала прочитали данные из нашего хранилища и обновили данные и вернули их обратно в хранилище. Экземпляр NServicebus выполняется самостоятельно в службе Windows. Вызовы на хранение разделяются в собственной сборке ('assembly1').

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

У меня есть мнение, совершенно ясно, но, возможно, я не прав, и поэтому я задаю этот вопрос ...

Если мы создали отдельную службу WCF, который использует копию «Ассамблеи1»? Или, если экземпляр WCF принимает nservicebus? Или, есть ли лучший способ сделать это?

Это как две конечные точки, WCF для синхронных вызовов и служба Windows, в которой сейчас находится nservicebus (который уже существует).

+0

* В некоторых случаях будут те же самые чтения, которые были необходимы при обновлении в сагах * - вы имеете в виду, что саги вызовут службы WCF? –

+0

Это способ сделать это, но сегодня нет службы WCF (еще ... TBD). Саги вызывают хранилище непосредственно через 'assembly1'. Все делается в обратном порядке. Без полной архитектуры в виду, и теперь нам нужно сделать все правильно. – Per

+0

Итак, ваш вопрос о том, должны ли ваши службы WCF независимо от ваших конечных точек NSB по архитектурным причинам или по функциональным причинам (т. Е. Вам нужно подвергать свои конечные точки услугами WCF)? Извините, но я не понимаю, чего вы пытаетесь достичь в конечном счете. Являются ли службы WCF используемыми NSB или вы просто предоставляете другой маршрут в свою БД через WCF и беспокоитесь о конкуренции и т. Д.? –

ответ

2

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

Редактировать

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

+0

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

2

Вообще говоря, сага должна обновлять собственное состояние (свойство Data) и отправлять сообщения другим конечным точкам. Он не должен обновлять другое состояние или делать вызовы RPC (например, для WCF).

Прежде чем давать более конкретные рекомендации, лучше было бы лучше узнать о конкретных обязанностях вашей саги и обновляемых данных «assembly1».