Перед тем как начать создавать рабочие процессы, важно понимать те компоненты, которые используются для того, чтобы помогать вам создавать и выполнять эти рабочие процессы. Первый — это визуальный конструктор, который позволяет вам визуально создавать код вашего рабочего процесса. Использование конструктора аналогично созданию формы Windows или ASP.NET. Вы могли бы сделать все это при помощи одного только кода, но инструменты значительно облегчают этот процесс.
После завершения кодирования ваш рабочий процесс компилируется в сборку. Эта сборка используется хост-приложением для создания экземпляра вашего рабочего процесса (по запросу клиента). На рис. 20.1 показано визуальное представление этого процесса.
Обратите внимание, что рисунок слева представляет собой рабочий процесс. Он компилируется в сборку. Затем на эту сборку ссылается создаваемое вами хост-приложение. Это
хост-приложение может быть сайтом ASP.NET, Web-сервисом, сервисом Windows, а также любым другим процессом .NET. Хост отвечает за управление клиентскими запросами к рабочему процессу.
Хост управляет запросами при помощи создания экземпляра объекта WorkflowRuntime. Именно этот объект создает экземпляры вашего рабочего процесса. Он использует планировщик рабочих процессов для запуска рабочего процесса в определенном потоке и возвращения вам указателя (GUID) на рабочий процесс. Затем вы можете использовать этот GUID для получения работающего экземпляра рабочего процесса от исполняющей среды. Исполняющая среда либо вызывает сервис планировщика (он не показан) для рабочих процессов в оперативной памяти, либо использует сервис хранения для повторной активации сохраненного рабочего процесса.
Клиенты ведут обМен с хостом при помощи любого выбранного вами механизма. Фактически вы можете скомбинировать клиента и хост в одном приложении. Это может быть полезно при тестировании, а также для тех приложений, в которых рабочий процесс имеет смысл только при работающем клиенте (и поэтому несколько рабочих процессов не поддерживается). Более часто встречающимся вариантом обмена с клиентами является создание хост- приложения в виде сервиса Windows, которое работает с Remoting или WCF (в качестве канала связи). Вы можете также вести обмен с рабочими процессами в процессе Web-сайта или предоставлять их через Web-сервис по HTTP.
Теперь, когда у вас есть базовое представление, давайте рассмотрим инструменты, которые yisual Studio предоставляет для создания рабочих процессов. Мы вернемся ко всем этим концепциям в последующих разделах и продемонстрируем их работу.