|
Программирование >> Программирование с использованием ajax
[ActivityValidator(typeof(DebugActivityValidator))] [Designer(typeof(DebugActivityDesigner))] public class DebugActivity : Activity { Puc. 36.17. Улучиленный внешний вид действия DebugActivity Здесь был добавлен атрибут Designer типа DebugActivity Designer. Если вы теперь скомпилируете приложение и перетащите на поверхность визуального конструктора действие DebugActivity (или просто откроете какой-то существующий рабочий поток, содержащий такое действие), оно будет иметь более совершенный вид, как показано на рис. 36.17. В случае внесения в тему изменений и перекомпиляции действия может возникнуть вопрос о том, почему эти изменения не отражаются сразу же внутри Visual Studio. Дело в том, что когда среда Visual Studio обнаруживает конструктор для конкретного типа, она кэширует его внутренним образом, поэтому единственным способом обновить представление является перезапуск Visual Studio. В случае удаления из кода действия атрибута Designer и его повторной компиляция в пользовательском интерфейсе (UI) все равно будет отображаться старый конструктор, поэтому перезапуск Visual Studio является единственным возможным вариантом. Исполняющая среда рабочего потока Класс Workf lowRuntime может размещаться в консольном приложении, как показывалось до сих пор в этой главе, но вообще может размещаться в любом .NET-прило-жении, например, в приложении Windows Forms на клиентской машине или внутри сайта ASP.NET для того, чтобы рабочие потоки могли выполняться на основании действий, которые пользователь предпринимает на Web-сайте. Исполняющая среда рассчитана на использование во всех этих средах и обладает специфической поддержкой для каждого типа приложения. Помимо рабочих потоков, исполняющая среда еще обслуживает ряд служб, которыми пользуется сама и которые также могут использовать и рабочие потоки по мере своего выполнения. Каждая такая служба представляет собой экземпляр .NET-класса, который был зарегистрирован с исполняющей средой. Пожалуй, наиболее полезной из этих служб является служба обеспечения постюянства (persistence service), которая берет простаивающий рабочий поток и сохраняет его на диске. Подобное обычно происходит, когда в рабочем потоке присутствует задержка, ведь хранить рабочий поток в памяти, пока он находится в спящем состоянии, нет никакой необходимости, а раз так, значит, служба обеспечения постоянства может упаковывать состояние рабочего потока и сохранять его на диске. В плане программирования в .NET служба обеспечения постоянства следует общей модели, т.е. подразумевает использование абстрактного класса, от которого путем наследования можно создавать другой класс и предоставлять специфическую реализацию. Абстрактным классом в данном случае является Workf lowPersistenceService, а унаследованным классом, обеспечивающим специфическую реализацию, например, сохранение данных службы в базе данных SQL - SqlWorkf lowPersistenceService. При желании, чтобы рабочие потоки сохранялись в каком-то другом хранилище, можно создавать свои собственные экземпляры службы обеспечения постоянства и подключать их к исполняющей среде рабочих потоков либо в коде, либо в конфигурационном файле. В следующем практическом занятии демонстрируется пример создания рабочего потока с действием DelayActivity и обеспечением возможности его сохранения в базе данных SQL Server. Сначала создается новая база данных, а затем выполняются два поставляемых с WF сценария для создания таблиц и хранимых процедур, необходимых службе обеспечения постоянства. Практичеокое занятие Использование службы обеспечения постоянства Существуют несколько разных способов для создания новой базы данных SQL Server, но в данном примере предполагается, что на компьютере установлена версия SQL Express и потому создавать базу данных и запускать сценарии можно только из Visual Studio. 1. В окне Server Explorer (Проводник сервера) выберите внутри узла Data Connections (Подключения данных) опцию Create New SQL Server Database (Создать новую базу данных SQL Server). Это приведет к отображению диалогового окна Create New SQL Server Database (Создание новой базы данных SQL Server), показанного на рис. 36.18. Create N*w SQL S 1юп to connect to a SQL Server, then e of a databMC to crwte. Server nam* Asqiexpress Log on to the seivef # Use yindows AuthentKation Use SQL Server Authentkelion rn S3ve my pastiword NewiiatabaMnarne Puc. 36.18. Диалоговое окно Create New SOL Server Database 2. В поле для имени сервера базы данных введите . \sqlexpress, а в поле для имени самой базы данных - WF. После этого в окне Server Explorer появится элемент, представляющий только что созданную базу данных. 3. Выполните в отношении этой базы данных два сценария, которые хранятся в каталоге %windir%\Microsof t .NET\Framework\v3. 5\SQL\EN. Для этого откройте в Visual Studio два показанных в диалоговом окне на рис. 36.19 файла, а именно- SqlPersistenceProviderSchema.sql и SqlPersistenceProviderLogic. sql. В одном содержится схема для службы обеспечения постоянства, а в другом - логика (хранимые процедуры). и> Open Flic 35 SQL t EN л\9ll< Link. Щ Documenti . Protect. >y Reten<f, Changed Devktop Pnrnt Places Ц1 Comparer ( Pictuir 1 Mu%ic Mofe Name D )pSqlPer5istenceProv>derLog c $qt j DropSqlPersittencePro. drSchenria tql SqiPenistenceProvtderLogK $qi SqlPerjirtenceProv.derSchemi $q: Date nriodif .ed 23 W 2007 0006 31 01 2007 0928 23/07 2007 00Ю6 19 те 2007 0011 SQLF4e Type SQL File! SQL File SQL File Foldeti Fte Qame ScPwMtonceProvioerSchema aqi Puc. 36.19. Открытие файлов SqlPersistenceProviderSchema. sql и SqlPersistenceProviderLogic, sql в Visual Studio 4. После открытия этих файлов в Visual Studio можно переходить к их поочередному выполнению. Сначала запустите файл SqlPersistenceProviderSchema.sql, для чего просто нажмите клавишу <F5> и выберите созданную в предыдущем шаге базу данных WF. Далее точно таким же образом запустите файл SqlPersistenceProviderLogic.sql. 5. Теперь, когда база данных SQL подготовлена, можно переходить к созданию нового проекта и применению в нем службы постоянства. Создайте новый проект типа Sequential Workflow Console Application (Консольное приложение последовательного рабочего потока), перетащите в него действие DelayActivity и установите для его свойства TimeoutDuration значение, равное пяти секундам - чуть позже вы увеличите этот интервал. 6. Чтобы иметь возможность просматривать состояние рабочего потока по мере его выполнения, нужно добавить в основную программу несколько обработчиков событий. Для этого откройте файл Program.cs и добавьте в него обработчики событий Workflowldled, WorkflowUnloaded, WorkflowPersisted и Workf lowLoaded так, чтобы они просто выводми информацию на консоль: static void Main(string [ ] args) using(WorkflowRuntime workflowRuntime { new WorkflowRuntime0 workflowRuntime.Workflowldled += new EventHandler<WorkflowEventArgs>(Workflowldled); workflowRuntime.WorkflowPersisted += new EventHandler<WorkflowEventArgs>(WorkflowPersisted) ; workflowRuntime.WorkflowLoaded += new EventHandler<WorkflowEventArgs>(WorkflowLoaded); workflowRuntime.WorkflowUnloaded += new EventHandler<WorkflowEventArgs>(WorkflowUnloaded);
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |