.NET WF4: это должно быть в центре всего? - PullRequest
5 голосов
/ 14 апреля 2010

Я работаю над новой архитектурой для по существу n-уровневого приложения для совместной работы (не корпоративного класса, а всего лишь небольшого проекта с потенциалом значительного роста), где я уже пытаюсь научить себя использовать IoC и, чтобы В некоторой степени, TDD, и мне интересно, в общих чертах, разумнее ли просто вручную кодировать логику рабочего процесса или мне следует углубиться в изучение и интеграцию WF4 (Windows Workflow 4.0, часть .NET 4.0), чтобы WF буквально становится контроллером всего приложения, то есть практическим C в «MVC» (не ASP.NET MVC, а скорее шаблоном). Таким образом, должен ли рабочий процесс в WF4 быть основным контроллером для расширяемого / расширяемого веб-приложения для совместной работы ? Или я задаю совершенно не тот вопрос?

Это неопределенный вопрос, я уверен, поэтому абстрактные ответы приветствуются так же, как и конкретные.

Мне известно, что WF4 - это значительная переделка и редизайн WF3, где многое из того, что сделало WF3 плохим выбором технологии, было убрано в WF4. Например, насколько я могу судить (хотя я не выглядел очень усердно и практически не освещал этот вопрос), действия WF4 более или менее тестируемы с помощью [TestMethod] и насмешкой (может кто-то из знаете, пожалуйста, подтвердите? .. тестируемость WF вызывает у нас огромное беспокойство) . У меня очень мало интереса к диаграммам или поздней загрузке через XML с WF, я предпочитаю писать конкретные объявления рабочих процессов на C #, но если рабочий процесс может быть написан кратко на скомпилированном языке и может быть тестируемым, я склонен платить внимание к этому. Так что, если есть эти улучшения, такие, как улучшение производительности, снова привлекли мое внимание к технологии, в то время как я ранее безумно относился к WF3.

Кроме того, по словам Microsoft, WF4 - это то, что Microsoft хочет стандартизировать для всех многих продуктов, управляемых рабочими процессами, в будущем, после уроков, извлеченных из использования различных технологий рабочих процессов в MS CRM, MS SharePoint и т. Д. Мне, безусловно, интересно о ставках на одну универсальную функцию, но только если реализации могут быть краткими, проверенными на типе во время компиляции, тестируемыми и поддерживаемыми.

РЕДАКТИРОВАТЬ:"Ответ" будут рассматриваться только от тех, кто знает WF4 (не WF3).

1 Ответ

2 голосов
/ 15 апреля 2010

Нет, я бы не стал ставить это в центр всего.

В настоящее время я участвую в проекте, широко использующем рабочий процесс 3. Это не рабочий процесс 4, и я понимаю, что в WF4 есть много улучшений, но ... рабочий процесс - это рабочий процесс.

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

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

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

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

В рабочем процессе вы можете сделать очень мало вещей, которые вы не можете сделать в простом коде (я говорю «очень мало», потому что я уверен, что они есть, но я не знаю ни одного). Вам нужно взвесить ваши прибыли и убытки и создать доказательство концепции.

...