Я изо всех сил пытался так долго найти востребованный вариант использования для рабочего процесса (т.е.: WF) по сравнению с регулярным императивным программированием. Каждый раз я отступаю к заключению, что я должен просто пропустить WF или задержать вхождение в него до позже. Но я продолжаю иметь это нытье, чувствуя, что существует что-то, отсутствую.
Кто-либо знает какую-либо книгу, которая действительно приводит веские аргументы в пользу Рабочего процесса путь? Книга должна (i) преподавать WF хорошо и (ii) показать использование соответствующих вариантов использования, что WF сделал реализацию легкой сделать, чем если бы мы просто сделали наше регулярное прямое кодирование.
Я буду ценить его.
С точки зрения неспециалиста, есть две вещи, которые, на мой взгляд, являются аргументом в пользу 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, так что эта оценка носит своего рода теоретический характер. Надеюсь, это все равно поможет!
Я не знаю книги специально по этой теме. Тем не менее, я считаю, что часть привлекательности WF (или других продуктов для рабочих процессов) заключается в том, что он вновь представляет возможность слабосвязанной парадигмы, основанной на сообщениях, в которой были заинтересованы первоначальные разработчики OO (такие как Алан Кей).
Концепция передаваемого "сообщения" не сразу очевидна в WF. Однако понятие объектов, действующих как дискретные машины, есть.
Замечательную (но несколько сумасшедшую) книгу о состоянии объектно-ориентированного программирования см. Объектное мышление Дэвида Уэста . И см. здесь , где Алан Кей обсуждает, что OO означает для него.
Не уверен, что есть хороший ответ на ваш вопрос. Проблема не в том, что вопрос недействителен или что-то в этом роде, потому что вы просите о двух очень разных вещах.
Прежде всего, вы спрашиваете веские причины для использования рабочего процесса. Это очень субъективный вопрос, не связанный с технологиями. Вы можете найти в Интернете официальные документы, указывающие на всевозможные успешные и неудачные реализации рабочих процессов. Это независимо от технологии, решение, которое было реализовано с использованием некоторого продукта 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 (примечание: бессовестная затычка, поскольку я являюсь ведущим автором курса)
Я привел ряд причин в этом ответе здесь , это может вам немного помочь.
Не совсем ответ на ваш вопрос, но я надеюсь, что все это будет вам полезно.
Это снова не прямой ответ, но он может быть полезен при поиске других ресурсов. Мне кажется, что WF довольно точно смоделирован на основе концепций, представленных в Business Process Execution Language (BPEL) . Этот стандарт. существует намного дольше, чем WF, и любое использование BPEL должно дать вам представление о том, для чего использовать WF.
Я не использовал WF, но когда я немного поигрался с BPEL, мне стало трудно его использовать. В основном это произошло из-за поддержки инструментов (я обнаружил, что плагин eclipse для визуального моделирования отсутствовал). Если объединить это с тем фактом, что читать код в XML сложно по сравнению с «синтаксисом нормального языка программирования», то BPEL не был жизнеспособным решением. Если в WF есть хороший визуальный инструмент, то эта проблема, по крайней мере, решена.