|
Программирование >> Программирование с использованием ajax
Windows Workflow Foundation Приветствуем вас в последней главе книги и надеемся, что нам удалось припасти самое интересное напоследок! Многие приложения нуждаются в наличии какой-нибудь возможности для их конфигурирования или настройки, и традиционно таковая обеспечивалась путем добавления в приложения какого-то хитрого приема, с помощью которого сторонние разработчики могли бы вставлять в них дополнительный код. Наиболее распространенный подход предусматривал определение в .NET интерфейса и последующую проверку того, что каждый подключаемый модуль поддерживает его. Недостаток такого подхода состоял в том, что все требовалось делать с помощью кода, что для конечных пользователей без опыта программирования было устрашающим, а то и вовсе невозможным. Другим способом для расширения приложений было и остается применение какого-то языка сценариев, вроде VBA (Visual Basic for Applications), который входит в состав Microsoft Word, Excel и многих других приложений. Проблема такого подхода состоит в стоящем на пути для начала его применения барьере, а именно - затратах, связанных с приобретением лицензии на использование VBA, к тому же интеграция этого продукта в собственные приложения тоже никак не является простым процессом. В .NET 3.0 и выше доступен другой (и, по нашему мнению, гораздо более удобный) способ для предоставления пользователям возможности выполнять настройку приложения, и заключается он в применении такого продукта, как Windows Workflow Foundation (WF). К рабочему потоку (workflow) можно относиться и просто как к функции на языке С#, которая состоит из ряда операторов (называемых действиями (activities)), а также необязательных параметров и возвращаемых значений. На этом, однако, все его сходство с функцией заканчивается, потому что рабочий поток определяется не с помощью кода, а с помощью ряда графических строительных блоков. Действия являются теми строительными блоками, из которых конструируется рабочий поток: в .NET поставляется 30 встроенных действий, часть из которых рассматривается в этой главе. Каждое действие, по сути, представляет собой всего лишь .NET-класс, который наследуется от определенного базового класса, что позволяет разработчику создавать свои собственные действия для выполнения специальных операций по обработке. Процесс создания рабочего потока напоминает процесс конструирования формы или страницы ASP.NET: разработчик может перетаскивать действия из панели Toolbox (Панель инструментов) на поверхность конструктора и объединять их в завершенный рабочий поток. При запуске потока в действие вступает механизм исполняющей среды (называемый исполняющей средой рабочего потока - WorkflowRuntime), который и выполняет все входящие в состав данного рабочего потока действия. Этот механизм знает, как планировать рабочие потоки, и применяется для обеспечения взаимодействия между выполняющимися экземплярами рабочих потоков. Рабочий поток можно сравнить с шаблоном Word: если рабочий поток - это шаблон, тогда выполняющийся экземпляр данного рабочего потока - это созданный из этого шаблона документ. В частности, в этой главе будут рассматриваться следующие темы. □ Как создаются рабочие потоки. □ Что собой представляет действие и как пользоваться несколькими встроенными действиями. □ Как обрабатывать неисправности в рабочем потоке. □ Как пользоваться службой обеспечения постоянства рабочих потоков. □ Как передавать параметры рабочему потоку. Практическое занятие Пример Hello World (в стиле рабочего потока) Ни одно описание нового принципа программирования не бывает полным без примера программы Hello World , поэтому чтобы не нарушать традицию, ниже предлагается реализовать этот традиционный пример с использованием Windows Workflow Foundation. 1. В Visual Studio 2008 доступно несколько новых типов проектов, поэтому чтобы создать новый проект типа рабочего потока, выберите в древовидном представлении Project Types (Типы проектов) элемент Workflow (Рабочий поток), а затем в представлении Templates (Шаблоны) - шаблон Sequential Workflow Console Application (Консольного приложение последовательного рабочего потока), как показано на рис. 36.1. Обратите внимание на раскрывающийся список в правом верхнем углу показанного на рис. 36.1 окна: он является новым средством в Visual Studio 2008 и позволяет выбирать в качестве целевой сразу несколько версий .NET Framework из одной и той же копии Visual Studio. Проект, созданный на этом первом шаге, приведет к созданию целого ряда файлов, которые будут рассматриваться далее в этом разделе. Самым интересным является сам рабочий поток, который показан на рис. 36.2. Как видно на этом рисунке, рабочий поток такого типа похож на блок-схему, поскольку тоже имеет начальную и конечную фигуру с областью посередине, куда можно перетаскивать действия. Po> yP i VfHu*lC Sm*rtDevKe D tab*sc Test Oth r lir>gu*9e* DntfibulPd Syrtems Otnct Pfoject Type Jr5 Plo rc A project fo crejtiog * . LocMWk Sohitiof. SohJlK>nN me V4u < Stu<J4> .oiUHed tempUf Empty Лсг1. о* Project 3iS tu ntia( Workflow CofHoJ* AppUcjt. PSequ n ) Wortftew L* y 9isu(e МкЬпе WmHIow Consote AppI 9st*te M.<:rune *cK tew L*)f.ry Я1 Wor low Actrvy l*f*or MyTemplitei - ........ Uls * h Online TempUtM 1 worlrflw* console eppUcetion, (,N€T Fnnework 35j 0-\LKei\K1oe9*n Documents Home Beg.nnmgCvWofMlowNC ode [7 J CimU directory fM solution 01 HetioWoHd Pwc. 36.1. Создание нового проекта типа Sequential Workflow Console Application 2. Продолжая создавать пример Hello World , добавьте действие, каковым в данном случае должно быть Code (Код), доступное в окне Toolbox. На рис. 36.3 показано, как будет выглядеть рабочий поток после добавления этого действия. Последовательный рабочий поток Область, в которую можно перетаскивать действия Последовательный рабочий поток 2 codeActlvltyl Рис. 36.3. Рабочий поток после добавления действия Code Рис. 36.2. Последовательный рабочий поток Обратите внимание на восклицательный знак в правом верхнем углу блока, представляющего действие: он указывает на то, что для этого свойства еще не было установлено обязательное свойство, каковым в данном случае является метод, который должен вызываться при выполнении данного действия. 3. Выполнение двойного щелчка на действии Code позволит сгенерировать необходимый метод автоматически, как показано в следующем фрагменте кода: public sealed partial class Workflowl: SequentialWorkflowActivity { public Workflowl0 { InitializeComponent();
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |