Поделиться через


Разработка службы рабочих процессов на основе контракта

Начиная с платформа .NET Framework 4.5, Windows Workflow Foundation (WF) лучше интегрируется между веб-службами и рабочими процессами в виде разработки рабочих процессов на основе контракта. Средство разработки рабочих процессов на основе контракта позволяет создать контракт в Code First. Затем это средство автоматически создает в области элементов шаблон действия для каждой операции в контракте. В этом разделе содержатся общие сведения о том, как действия и свойства в службе рабочих процессов сопоставляются с атрибутами контракта службы. Пошаговый пример создания службы рабочего процесса для контракта см. в статье "Практическое руководство. Создание службы рабочего процесса, использующую существующий контракт службы службы".

В этом разделе

Сопоставление атрибутов контракта службы с атрибутами рабочего процесса

Таблицы в следующих разделах показывают различные атрибуты и свойства WCF, а также как они сопоставляются с действиями по обмену сообщениями и их свойствами в рабочем процессе на основе контракта.

Атрибуты контракта службы

Имя свойства Поддерживается Description Проверка рабочего процесса
CallbackContract No Возвращает или задает тип контракта обратного вызова, если контракт является дуплексным. (не определено)
ConfigurationName No Возвращает или задает имя, используемое для поиска службы в файле конфигурации приложения. (не определено)
HasProtectionLevel Да Возвращает значение, указывающее, присвоен ли участнику уровень защиты. Свойство Receive.ProtectionLevel не должно иметь значение NULL.
Имя. Да Возвращает или задает имя <элемента portType> в языке описания веб-служб (WSDL). Свойство Receive.ServiceContractName.LocalName должно согласовываться.
Пространство имен Да Возвращает или задает пространство <имен элемента portType> в языке описания веб-служб (WSDL). Свойство Receive.ServiceContractName.NameSpace должно согласовываться.
ProtectionLevel Да Указывает, должна ли привязка для контракта поддерживать значение свойства ProtectionLevel. Свойство Receive.ProtectionLevel должно согласовываться.
SessionMode No Возвращает или задает значение, указывающее, разрешены, запрещены или требуются ли сеансы. (не определено)
TypeId No Возвращает уникальный идентификатор для этого атрибута при реализации в производном классе. (Наследуется от атрибута.) (не определено)

Вставьте сюда основной текст подраздела.

Атрибуты контракта операции

Имя свойства Поддерживается Description Проверка рабочего процесса
Действие Да Возвращает или задает действие WS-Addressing сообщения запроса. Свойство Receive.Action должно согласовываться.
AsyncPattern No Указывает, что операция реализуется асинхронно с помощью пары методов Begin<methodName> и End<methodName> в контракте службы. (не определено)
HasProtectionLevel Да Возвращает значение, указывающее, должны ли сообщения этой операции шифроваться, подписываться или шифроваться и подписываться. Свойство Receive.ProtectionLevel не должно иметь значение NULL.
IsInitiating No Возвращает или задает значение, указывающее, реализует ли метод операцию, которая может инициировать сеанс на сервере (если такой сеанс существует). (не определено)
IsOneWay Да Возвращает или задает значение, указывающее, возвращает ли операция ответное сообщение. (Не существует SendReply для этого Receive ИЛИ ReceiveReply для этого Send.)
IsTerminating No Возвращает или задает значение, указывающее, приводит ли операция службы к закрытию сеанса сервером после отправки ответного сообщения, если оно есть. (не определено)
Имя. Да Возвращает или задает имя операции. Свойство Receive.OperationName должно согласовываться.
ProtectionLevel Да Возвращает или задает значение, указывающее, должны ли сообщения операции шифроваться, подписываться или шифроваться и подписываться. Свойство Receive.ProtectionLevel должно согласовываться.
ReplyAction Да Возвращает или задает значение действия SOAP для ответного сообщения операции. Свойство SendReply.Action должно согласовываться.
TypeId No Возвращает уникальный идентификатор для этого атрибута при реализации в производном классе. (Наследуется от атрибута.) (не определено)

Атрибуты контракта сообщения

Имя свойства Поддерживается Description Проверка рабочего процесса
HasProtectionLevel Да Возвращает значение, указывающее, присвоен ли сообщению уровень защиты. Проверка не выполняется (Receive.Content и SendReply.Content должны согласовываться с типом контракта сообщения).
IsWrapped Да Возвращает или задает значение, указывающее, имеет ли текст сообщения элемент программы-оболочки. Проверка не выполняется (Receive.Content и Sendreply.Content должны согласовываться с типом контракта сообщения).
ProtectionLevel No Возвращает или задает значение, указывающее, необходимо ли шифровать сообщение, подписывать его или и то и другое. (не определено)
TypeId Да Возвращает уникальный идентификатор для этого атрибута при реализации в производном классе. (Наследуется от атрибута.) Проверка не выполняется (Receive.Content и SendReply.Content должны согласовываться с типом контракта сообщения).
WrapperName Да Возвращает или задает имя элемента программы-оболочки текста сообщения. Проверка не выполняется (Receive.Content и SendReply.Content должны согласовываться с типом контракта сообщения).
WrapperNamespace No Возвращает или задает пространство имен элемента программы-оболочки текста сообщения. (не определено)

Атрибуты контракта данных

Имя свойства Поддерживается Description Проверка рабочего процесса
IsReference No Возвращает или задает значение, указывающее, следует ли сохранять данные ссылки на объект. (не определено)
Имя. Да Возвращает или задает имя для контракта данных типа. Проверка не выполняется (Receive.Content и SendReply.Content должны согласовываться с типом контракта сообщения).
Пространство имен Да Возвращает или задает пространство имен для контракта данных типа. Проверка не выполняется (Receive.Content и SendReply.Content должны согласовываться с типом контракта сообщения).
TypeId No Возвращает уникальный идентификатор для этого атрибута при реализации в производном классе. (Наследуется от атрибута.) (не определено)

Атрибуты контракта сбоя

Имя свойства Поддерживается Description Проверка рабочего процесса
Действие Да Возвращает или задает действие сообщения об ошибке SOAP, которое задается как компонент контракта операции. Свойство SendReply.Action должно согласовываться.
DetailType Да Возвращает тип сериализуемого объекта, который содержит информацию об ошибке. Свойство SendReply.Content должно согласовываться с типом.
HasProtectionLevel No Возвращает значение, указывающее, присвоен ли сообщению об ошибке SOAP уровень защиты. (не определено)
Имя. No Возвращает или задает имя сообщения об ошибке в языке WSDL. (не определено)
Пространство имен No Возвращает или задает пространство имен ошибки SOAP. (не определено)
ProtectionLevel No Задает уровень защиты, который требуется от привязки для ошибки SOAP. (не определено)
TypeId No Возвращает уникальный идентификатор для этого атрибута при реализации в производном классе. (Наследуется от атрибута.) (не определено)

Дополнительные сведения о поддержке и реализации

Неподдерживаемые функции контракта службы

  • Использовать библиотеку параллельных задач (TPL) в контрактах невозможно.

  • Наследование в контрактах службы не поддерживается.

Создание настроенных действий обмена сообщениями

Два общих статических метода добавляются в действия Receive и SendReply для поддержки создания предварительно настроенных действий сообщения, если используются службы рабочих процессов на основе контракта.

Действие, созданное этими методами, должно пройти проверку по контракту и поэтому используется как часть логики проверки для Receive и SendReply. Действия OperationName, ServiceContractName, Action, SerializerOption, ProtectionLevel и KnownTypes предварительно настроены для соответствия импортированному контракту. На странице свойств содержимого для действий в конструкторе рабочих процессов разделы "Сообщения или параметры " также предварительно настроены для сопоставления контракта.

Контракты сбоя WCF также обрабатываются путем возврата отдельного набора настроенных SendReply действий для каждой из ошибок, которые отображаются в .Faults FaultDescriptionCollection

Для других частей OperationDescription , которые неподдерживаются службами WF сегодня (например, поведение WebGet/WebInvoke или пользовательское поведение операций), API будет игнорировать эти значения в рамках создания и настройки. Исключения не формируются.