Целесообразно ли использовать Windows Workflow Foundation (WF) в качестве движка правил презентации? - PullRequest
3 голосов
/ 19 сентября 2011

Я работаю над n-уровневым приложением, которому нужен механизм правил в конце презентации.

Мне нужно загрузить правила отображения из БД на уровень BLL и передать их клиенту. Например. Элемент A выделен красным, когда свойствоX имеет значение true, и белым цветом, если свойство Y имеет значение &&. Он должен быть скрыт, если ни один из них не равен true, и у вас нет роли администратора

В какой-то момент BLL в конечном итоге станет правилом, но мы сначала перенесем жестко запрограммированную логику из существующего клиент-серверного приложения.

Глядя на WF, кажется, что он позволяет мне создавать и сериализовать рабочие процессы, которые я могу разместить на BLL или на уровне представления.

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

Это хорошая идея?

Было бы проще определить DSL и управлять всем самостоятельно?

Ответы [ 2 ]

4 голосов
/ 19 сентября 2011

Есть две вещи, которые вы должны знать.

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

Несмотря на то, что вы можете выполнять параллельные действия в .NET 4, выполнение запускается в синхронном состоянии. Это добавит дополнительный уровень обслуживания для вашего приложения, потому что WF понадобится уровень WCF, чтобы хорошо взаимодействовать вне его границ проекта.

См. Этот обзор основы рабочего процесса из MSDN:

Обзор фонда Workdlow http://i.msdn.microsoft.com/dynimg/IC102288.gif

Во-вторых, большие правила рабочих процессов будут ухудшать производительность в долгосрочной перспективе, если только вы действительно НЕ НУЖНЫ долгосрочному процессу, такому как рабочий процесс утверждения, который должен ждать, пока правильный человек с правильными привилегиями (или должностями) утвердит. Workflow Foundation очень хорош в этом, особенно в .NET версии 4 и выше.

Это обзор Workflow Foundation 4: Обзор MSDN библиотеки .NET 4 Workflow Foundation и с него можно начинать.

При использовании в WPF вы должны вызывать службу рабочего процесса асинхронно, иначе она заблокирует поток пользовательского интерфейса WPF.

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

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

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

3 голосов
/ 22 сентября 2011

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

На самом деле, я написал Введение в конечные автоматы в лаборатории с этим же сценарием. В этом приложении клиент WPF с шаблоном MVVM использует рабочий процесс в модели для управления поведением имитируемого банкомата.

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