Веские доводы в пользу WF

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

Кто-либо знает какую-либо книгу, которая действительно приводит веские аргументы в пользу Рабочего процесса путь? Книга должна (i) преподавать WF хорошо и (ii) показать использование соответствующих вариантов использования, что WF сделал реализацию легкой сделать, чем если бы мы просто сделали наше регулярное прямое кодирование.

Я буду ценить его.

38
задан Maurice 23 March 2010 в 16:22
поделиться

4 ответа

С точки зрения неспециалиста, есть две вещи, которые, на мой взгляд, являются аргументом в пользу WF: одна уникальна для платформ рабочих процессов, а другая, возможно, более удобна.

Удобная функция - это возможность создавать новые способы составления занятий. Императивное программирование предоставляет только ограниченный набор примитивов композиции: в основном последовательность, if-else и циклы. WF позволяет вам создавать собственные операторы композиции, такие как чередование выполнения, параллельное выполнение, первое после публикации и т. Д. И, конечно же, в него встроен сложный механизм композиции конечных автоматов.

Я говорю, что это удобная функция, потому что вы можете построить все эти операторы на императивном языке, таком как C #: на самом деле как вы строите операторы WF. Но WF упрощает использование и чтение пользовательских композиций, тогда как в C # вы быстро потеряете град лямбда-выражений. Поэтому, если у вас есть сложные требования к оркестровке - то есть, если способ согласования ваших действий сложнее, чем последовательности, if-else и циклы, - тогда WF может упростить выражение и понимание вашей программы.

Уникальной особенностью является долговечность . Вот откуда начинается книга Шуклы и Шмидта и к чему она постоянно возвращается. Обязательная программа, написанная на C # или VB, может работать часами, днями, неделями, если повезет, может быть, даже месяцами ... но в конечном итоге IIS будет циклически включать пул приложений, или администраторы захотят установить последние обновления безопасности. , или кто-то собирается споткнуться о шнур питания.Как тогда ваша программа запоминает: «Хорошо, у меня есть заказ на покупку от Unimaginative Company Names R Us, и я жду одобрения кредита от Bank of Breadheads Inc., и когда я его получу, я могу отправить подтверждение email "?

В обычной императивной программе, когда процесс умирает, состояние выполнения умирает вместе с ним. Вы можете начать новый процесс, но он начнется в начале программы. Конечно, вы можете создать базу данных и использовать ее для хранения таких флагов, как «получил заказ на покупку» и «получил одобрение кредита». Но теперь вам нужно написать код для конкретного приложения, чтобы сохранить и запросить состояние, а также вернуться в нужную точку программы в зависимости от этого состояния. И вам необходимо разработать новую базу данных и новую логику сохранения / восстановления / перехода для каждого отдельного долго работающего приложения.

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

Для меня это «веские аргументы» в пользу WF. Во многих случаях вам это не нужно: приложения достаточно недолговечны, так что сбой не является серьезной проблемой, а перезапуск с нуля является жизнеспособной стратегией восстановления.Но для приложений с длительным сроком службы, например, где вы можете управлять внешними системами, реагирование которых может занять несколько часов, или бизнес-процессами, в которых задействованы люди, которым могут потребоваться дни, чтобы ответить, надежность может оказаться решающим фактором для WF.

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

21
ответ дан 27 November 2019 в 03:55
поделиться

Я не знаю книги специально по этой теме. Тем не менее, я считаю, что часть привлекательности WF (или других продуктов для рабочих процессов) заключается в том, что он вновь представляет возможность слабосвязанной парадигмы, основанной на сообщениях, в которой были заинтересованы первоначальные разработчики OO (такие как Алан Кей).

Концепция передаваемого "сообщения" не сразу очевидна в WF. Однако понятие объектов, действующих как дискретные машины, есть.

Замечательную (но несколько сумасшедшую) книгу о состоянии объектно-ориентированного программирования см. Объектное мышление Дэвида Уэста . И см. здесь , где Алан Кей обсуждает, что OO означает для него.

0
ответ дан 27 November 2019 в 03:55
поделиться

Не уверен, что есть хороший ответ на ваш вопрос. Проблема не в том, что вопрос недействителен или что-то в этом роде, потому что вы просите о двух очень разных вещах.

Прежде всего, вы спрашиваете веские причины для использования рабочего процесса. Это очень субъективный вопрос, не связанный с технологиями. Вы можете найти в Интернете официальные документы, указывающие на всевозможные успешные и неудачные реализации рабочих процессов. Это независимо от технологии, решение, которое было реализовано с использованием некоторого продукта X, могло быть также выполнено с использованием продукта Y. Глава Шукла и Шмидт, безусловно, объясняет основы, но я не уверен, что это хорошая книга, показывающая вам, где и как применить рабочий процесс.

Во-вторых, вы ищете книгу, которая научит вас Windows Workflow Foundation. Первый вопрос - это WF3 или WF4, поскольку они очень разные звери. Я предполагаю, что WF4 заменит WF3, когда .NET 4 будет выпущен (очень скоро), и начинать с WF3 в большинстве случаев не имеет большого смысла.Но поскольку WF3 никогда не был очень популярным, а книжный рынок не очень прибыльным для большинства писателей, книг по WF4 еще нет. Я считаю, что Брюс Буковичс работает над новой версией своей книги Pro WF: Windows Workflow в .NET 3.5 , которую я нашел одной из наиболее полезных книг по WF3. Пока ничего нет, и вы застряли с чрезвычайно ограниченными документами на сайте msdn и блоге вроде моего здесь . И, конечно же, есть курсы вроде this от DevelopMentor (примечание: бессовестная затычка, поскольку я являюсь ведущим автором курса)

Я привел ряд причин в этом ответе здесь , это может вам немного помочь.

Не совсем ответ на ваш вопрос, но я надеюсь, что все это будет вам полезно.

5
ответ дан 27 November 2019 в 03:55
поделиться

Это снова не прямой ответ, но он может быть полезен при поиске других ресурсов. Мне кажется, что WF довольно точно смоделирован на основе концепций, представленных в Business Process Execution Language (BPEL) . Этот стандарт. существует намного дольше, чем WF, и любое использование BPEL должно дать вам представление о том, для чего использовать WF.

Я не использовал WF, но когда я немного поигрался с BPEL, мне стало трудно его использовать. В основном это произошло из-за поддержки инструментов (я обнаружил, что плагин eclipse для визуального моделирования отсутствовал). Если объединить это с тем фактом, что читать код в XML сложно по сравнению с «синтаксисом нормального языка программирования», то BPEL не был жизнеспособным решением. Если в WF есть хороший визуальный инструмент, то эта проблема, по крайней мере, решена.

1
ответ дан 27 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: