Как получить доступ к службе из приложения рабочего процесса

В этом разделе описывается вызов службы рабочего процесса из консольного приложения рабочего процесса. Оно зависит от завершения раздела "Практическое руководство. Создание службы рабочих процессов с помощью действий обмена сообщениями". Хотя в этом разделе описывается вызов службы рабочего процесса из приложения рабочего процесса, те же методы можно использовать для вызова любой службы Windows Communication Foundation (WCF) из приложения рабочего процесса.

Создание проекта консольного приложения рабочего процесса

  1. Запустите Visual Studio 2012.

  2. Загрузите проект MyWFService, созданный в разделе "Практическое руководство. Создание службы рабочих процессов с помощью действий обмена сообщениями".

  3. Щелкните правой кнопкой мыши решение MyWFService в Обозреватель решений и выберите "Добавить", "Создать проект". Выберите рабочий процесс в установленномшаблоне и консольном приложении рабочего процесса из списка типов проектов. Назовите проект MyWFClient и используйте расположение по умолчанию, как показано на следующем рисунке.

    Add New Project Dialog

    Нажмите кнопку "ОК", чтобы закрыть диалоговое окно "Добавить новый проект".

  4. После создания проекта в конструкторе откроется файл Workflow1.xaml. Щелкните вкладку "Панель элементов", чтобы открыть панель элементов , если она еще не открыта и нажмите кнопку, чтобы открыть окно панели элементов.

  5. Нажмите клавиши CTRL+F5, чтобы создать и запустить службу. Как и раньше, запускается сервер разработки ASP.NET, а в браузере отображается страница справки WCF. Запомните URI этой страницы, поскольку его будет необходимо использовать в следующем шаге.

    Browser displaying WCF help page and URI

  6. Щелкните правой кнопкой мыши проект MyWFClient в Обозреватель решений и выберите "Добавить>ссылку на службу". Нажмите кнопку "Обнаружить", чтобы найти текущее решение для любых служб. Нажмите треугольник рядом с Service1.xamlx в списке «Службы». Нажмите треугольник рядом с Service1, чтобы открыть список контрактов, реализованных службой Service1. Разверните узел Service1 в списке служб. Операция "Эхо" отображается в списке операций , как показано на следующем рисунке.

    Add Service Reference Dialog

    Сохраните пространство имен по умолчанию и нажмите кнопку "ОК ", чтобы закрыть диалоговое окно "Добавить ссылку на службу". Отобразится следующее диалоговое окно.

    Add Service Reference Notification dialog

    Нажмите кнопку "ОК ", чтобы закрыть диалоговое окно. Затем, чтобы выполнить сборку решения, нажмите сочетание клавиш CTRL+SHIFT+B. Обратите внимание, что на панели элементов добавлен новый раздел MyWFClient.ServiceReference1.Activities. Разверните этот раздел и обратите внимание на действие с именем Echo, которое было добавлено, как показано на следующем рисунке.

    Echo activity in the toolbox

  7. Перетащите действие Sequence в область конструктора. Он находится в разделе потока управления панели элементов.

  8. Sequence С помощью действия в фокусе щелкните ссылку "Переменные" и добавьте строковую переменную с именемinString. Присвойте переменной значение "Hello, world" по умолчанию, а также строковую переменную, как outString показано на следующей схеме.

    Adding an inString variable

  9. Перетащите действие "Эхо" в элемент Sequence. В окне свойств аргумент привязывается inMsg к inString переменной и outMsg аргументу переменной outString , как показано на следующем рисунке. При этом операции будет передано значение переменной inString, а затем будет принято возвращаемое значение и помещено в переменную outString.

    Binding the arguments to variables

  10. Перетащите действие WriteLine под действием Echo, чтобы отобразить строку, возвращаемую вызовом службы. Действие WriteLine находится на узле Primitives на панели элементов. Привязывайте аргумент Text действия WriteLine к outString переменной, введя outString в текстовое поле действие WriteLine. После этого рабочий процесс должен выглядеть так, как показано на следующем рисунке.

    The complete client workflow

  11. Щелкните правой кнопкой мыши решение MyWFService и выберите "Задать запускаемые проекты". Нажмите переключатель " Несколько запускаемых проектов " и нажмите кнопку "Пуск " для каждого проекта в столбце "Действие ", как показано на следующем рисунке.

    Startup projects options

  12. Нажмите клавиши CTRL+F5 , чтобы запустить службу и клиент. Сервер разработки ASP.NET размещает службу, браузер отображает страницу справки WCF, а клиентское приложение рабочего процесса запускается в окне консоли и отображает строку, возвращаемую службой (Hello, world).

См. также