Как получить доступ к службе из приложения рабочего процесса
Данный раздел относится к версии Windows Workflow Foundation 4.
В этом разделе описывается вызов службы рабочего процесса из консольного приложения рабочего процесса. Он связан с разделом Как создать службу рабочего процесса с помощью действий обмена сообщениями. Хотя в этом разделе описывается вызов службы рабочего процесса из приложения рабочего процесса, эти же методы можно использовать для вызова любых служб Windows Communication Foundation (WCF) из приложения рабочего процесса.
Создание проекта консольного приложения рабочего процесса
Запустите Visual Studio 2010.
Загрузите проект MyWFService, созданный в разделе Как создать службу рабочего процесса с помощью действий обмена сообщениями.
Щелкните правой кнопкой мыши решение MyWFService в обозревателе решений и выберите Добавить, а затем Создать проект. Выберите Рабочий процесс в области Установленные шаблоны и выберите в списке типов проекта Консольное приложение рабочего процесса. Назовите проект MyWFClient и используйте расположение по умолчанию, как показано на следующем рисунке.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Добавление нового проекта.
После создания проекта в конструкторе откроется файл Workflow1.xaml. Нажмите вкладку Область элементов, чтобы открыть область элементов, и щелкните вешку, чтобы оставить окно области элементов открытым.
Чтобы собрать и запустить службу, нажмите сочетание клавиш CTRL+F5. Как и раньше, будет запущен ASP.NET Development Server, а в обозревателе Internet Explorer откроется страница справки WCF. Запомните URI этой страницы, поскольку его будет необходимо использовать в следующем шаге.
В обозревателе решений щелкните правой кнопкой мыши проект MyWFClient и выберите команду Добавить ссылку на службу. Нажмите кнопку Обнаружение для поиска текущего решения для любой из служб. Нажмите треугольник рядом с Service1.xamlx в списке «Службы». Нажмите треугольник рядом с Service1, чтобы открыть список контрактов, реализованных службой Service1. Разверните узел Service1 в списке Службы. В списке Операции отобразится операция с именем Echo, как показано на следующем рисунке.
Оставьте без изменений пространство имен, заданное по умолчанию, и нажмите ОК, чтобы закрыть диалоговое окно Добавить ссылку на службу. Отобразится следующее диалоговое окно.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно. Затем нажмите кнопку F6 для сборки решения. Обратите внимание, что к области элементов был добавлен новый раздел с именем MyWFClient.ServiceReference1.Activities. Разверните этот раздел и обратите внимание на действие с именем Echo, которое было добавлено, как показано на следующем рисунке.
Перетащите действие Sequence в область конструктора. Оно находится в разделе области элементов Поток управления.
При установке фокуса на Sequence щелкните ссылку Переменные и добавьте строковую переменную с именем inString. Задайте для переменной значение по умолчанию «Hello, world», а также строковую переменную с именем outString, как показано на следующей схеме.
Перетащите действие с именем Echo в Sequence. В окне свойств выполните привязку аргумента к переменной
inString
и аргументаout_string
к переменной outString, как показано на следующем рисунке. При этом операции будет передано значение переменнойinString
, а затем будет принято возвращаемое значение и помещено в переменнуюoutString
.Перетащите действие WriteLine и расположите его под действием Echo, чтобы отобразить строку, возвращаемую вызовом службы. Действие WriteLine находится в узле Примитивы в области элементов. Выполните привязку аргумента Text действия WriteLine с переменной
outString
, введя в текстовом поле outString в действии WriteLine. После этого рабочий процесс должен выглядеть так, как показано на следующем рисунке.Щелкните правой кнопкой мыши решение MyWFService и выберите Установка автозагружаемых проектов... Щелкните переключатель Несколько запускаемых проектов и выберите Начать для всех проектов в столбце Действие, как показано на следующем рисунке.
Используйте сочетание клавиш Ctrl+F5 для запуска службы и клиента. ASP.NET Development Server размещает службу, в обозревателе Internet Explorer отображается страница справки WCF, а клиентское приложение рабочего процесса запускается в окне консоли и отображает строку, возвращаемую службой («Hello, world»).
См. также
Задачи
Как создать службу рабочего процесса с помощью действий обмена сообщениями