Разработка службы рабочих процессов на основе контракта
Начиная с платформа .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 будет игнорировать эти значения в рамках создания и настройки. Исключения не формируются.