WF и nServiceBus перекрываются? Как? А какой использовать? - PullRequest
9 голосов
/ 15 сентября 2010

Есть ли какое-либо совпадение между MS WF и NServiceBus, в частности с точки зрения рабочего процесса? Есть ли необходимость использовать один, если другой уже используется? Насколько хорошо они играют вместе?

Ответы [ 3 ]

10 голосов
/ 23 февраля 2011

Я хотел бы дать свои 2 цента:

Я работаю в новом проекте с довольно сложным доменом, где некоторые рабочие процессы домена могут развиваться и изменяться в некоторых различных сценариях.Мы анализировали возможные решения для организации различных Серверов приложений (сервисы WCF).Первым архитектурным решением, которое мы проанализировали, было использование шаблона Service Bus + PubSubs (nservicebus, Rhino ESB, masstransit, Shuttle ESB ...).Другое решение, которое мы проанализировали, было WF 4.0.Мы близки к тому, чтобы принять решение, и к настоящему времени WF 4.0 является выбранным, потому что:

  • Рабочие процессы моделируются с использованием рабочего процессадиаграммы
  • рабочий процесс конструктор диаграмм может быть встроен в пользовательское приложение, которое можно использовать для развития рабочих процессов во время производства, поскольку они определены вXAML.
  • Шаблон PubSubs с sagas как-то ослабил бы то, как моделируется рабочий процесс, и в некоторых сложных сценариях было бы трудно иметь четкое представление о том, как работает рабочий процесс
  • WF 4.0 WorkflowСлужбы поверх WCF , поэтому вы можете иметь действия отправки / получения, которые взаимодействуют с конечными точками WCF.Таким образом, мы обладаем всей мощью и гибкостью WCF: безопасность, надежная связь, стандарты MSMQ, WS *, ...
  • WF 4.0 могут быть размещены на Appfabric : масштабируемость, ремонтопригодность, мониторинг и устранение неполадок стало проще

Есть минус, который мы уже анализируем, это тот факт, что WF 4.0 не поддерживает конечные автоматы (как это было в версии3,5).Хотя MSFT объясняет, как реализовать конечные автоматы , используя новые действия Fowchart, поставляемые с 4.0

Надеюсь, это поможет,

Juanjo

8 голосов
/ 23 сентября 2011

Я должен не согласиться с @Andreas Öhlund.Это все равно что сказать: «У меня есть C # и .NET Framework, так зачем мне покупать систему ERP?»Ответ @ juanjo.arana гораздо более сбалансированный.

Документация NServiceBus для Sagas - это одна страница (5 экранов на моем мониторе).Книга Pro WF составляет 850 страниц.(Я прочитал это; это не наполнитель.) Книга Professional K2 blackpearl (обсуждающая полную систему BPM ) составляет 870 страниц (счетчик Amazon отключен).1012 * Даже WF 4 (исключая SharePoint) не является полнофункциональной системой BPM.В ней отсутствует модель безопасности на уровне активности, блокировка («Боб запросил этот рабочий заказ, но еще не выполнил его»), расширенное управление версиями и создание отчетов.Вы можете построить все эти вещи, но они не находятся в «коробке».

Посмотрите на раздел Timeouts на странице Sagas NServiceBus.Сравните это с визуальным методом выполнения выдоха в WF 4 .Представьте себе, что вы отслеживаете это в сложном рабочем процессе, где таймауты (эскалации) необходимы каждый раз, когда менеджер хочет получить уведомление о том, что сотрудник занимает слишком много времени в системе обработки документов.иногда излишне, и что их может быть трудно проверить.(Есть способов для модульного тестирования WF 4 .) Но я бы не хотел создавать реальный рабочий процесс в стиле BPM с NServiceBus.

4 голосов
/ 15 сентября 2010

NServiceBus поддерживает рабочие процессы через "sagas", http://nservicebus.com/Sagas.aspx

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

У Уди есть подкаст, обсуждающий все это:

http://www.udidahan.com/2007/10/23/podcast-durable-services-with-wcf-wf-and-nservicebus/

Вкратце: если вы используете NSB, IMO для MS WF не понадобится.

...