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


Проектирование и реализация служб

В этом разделе показывается, как определить и реализовать контракты WCF. Контракт службы указывает, какую информацию конечная точка передает во внешний мир. На более конкретном уровне, это выписка о наборе специальных сообщений, объединенных в такие базовые шаблоны обмена сообщениями (MEP), как запрос/ответ, односторонний обмен и дуплексный обмен. Если контракт службы является логически связанным набором обмена сообщениями, операция службы — это обмен одним сообщением. Например, операция Hello должна явно принять одно сообщение (к примеру, вызывающая сторона может объявить приветствие) и может вернуть или не вернуть сообщение (в зависимости от характера операции).

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

Общие сведения

В этом разделе дается высокоуровневое концептуальное введение в разработку и реализацию служб WCF. В подразделах приводятся более подробные сведения об особенностях разработки и реализации. Перед разработкой и реализацией приложения WCF рекомендуется:

  • понять, что представляет собой контракт службы, как он работает и как его создать;

  • понять, что контракты устанавливают минимальные требования, которые конфигурация среды выполнения или среда размещения может не поддерживать.

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

В контракте службы определено следующее:

  • операции, предоставляемые контрактом;

  • сигнатура операций в терминах обмена сообщениями;

  • типы данных этих сообщений;

  • расположения операций;

  • специальные протоколы и форматы сериализации, используемые для поддержки успешной связи со службой.

Например, контракт, связанный с заказом на поставку, может содержать операцию CreateOrder, которая принимает входные данные о типах информации заказа и возвращает информацию об успешности или сбое, включая идентификатор заказа. Он также может содержать операцию GetOrderStatus, которая принимает идентификатор заказа и возвращает информацию о состоянии заказа. Контракт службы этого типа указывает:

  1. что контракт, связанный с заказом на поставку, состоит из операций CreateOrder и GetOrderStatus;

  2. что операции имеют заданные входные и выходные сообщения;

  3. данные, которые могут передаваться в этих сообщениях;

  4. категорические заявления об инфраструктуре связи, необходимые для успешной обработки сообщений. Например, эти сведения включают данные о том, требуются ли какие-либо формы безопасности для установления успешной связи, и какие конкретно формы безопасности.

Чтобы передать сведения этого типа в другие приложения на нескольких платформах (включая платформы, отличные от Майкрософт), контракты XML-служб открыто представляются в стандартных форматах XML, например в формате языка описания веб-служб (WSDL), схемы XML (XSD) и других форматах. Разработчики многих платформ могут использовать эти открытые данные контрактов для создания приложений, которые могут взаимодействовать со службой, поскольку они понимают язык спецификации, и эти языки позволяют обеспечить возможность взаимодействия, описывая открытые формы, форматы и протоколы, поддерживаемые службой. Дополнительные сведения о том, как WCF обрабатывает сведения этого типа, см. в разделе Метаданные.

Контракты могут представляться различными способами. Хотя языки WSDL и XSD отлично подходят для описания служб доступным способом, их трудно использовать непосредственно, и они представляют просто описания службы, а не реализации контракта службы. Поэтому приложения WCF используют управляемые атрибуты, интерфейсы и классы для определения структуры службы и ее реализации.

Получающийся контракт, определенный в управляемых типах, может быть экспортирован как метаданные (WSDL и XSD), когда это требуется клиентам или другим ответственным за реализацию службы. Результат — простая модель программирования, которая может быть описана (с использованием открытых метаданных) для любого клиентского приложения. Подробности базовых сообщений SOAP, сведения, связанные с транспортировкой и безопасностью, и т. д. могут быть предоставлены системе WCF, которая автоматически выполняет необходимые преобразования в систему типа контракта службы и из системы типов контракта службы в систему типа XML.

Дополнительные сведения о разработке контрактов см. в разделе Создание контрактов служб. Дополнительные сведения о реализации контрактов см. в разделе Реализация контрактов служб.

На первом плане — сообщения

Использовать управляемые интерфейсы, классы и методы для моделирования операций служб просто, если программист привык к сигнатурам методов стиля удаленного вызова процедур (RPC), когда передача параметров в метод и получение возвращаемых значений является обычной формой запроса функций от объекта или другого типа кода. Например, программисты, использующие управляемые языки типа Visual Basic и C++ COM, могут применять свои знания подхода стиля RPC (при использовании как объектов, так и интерфейсов) для создания контрактов служб WCF, не испытывая проблем, встречающихся в системах распределенных объектов стиля RPC. Ориентация службы обеспечивает преимущества слабосвязанного программирования, ориентированного на сообщения, сохраняя при этом удобство и привычность программирования RPC.

Многим программистам удобнее работать с интерфейсами программирования приложений, ориентированными на сообщения, например с очередями сообщений типа MSMQ корпорации Майкрософт, пространствами имен System.Messaging в платформе .NET Framework или с передачей неструктурированных данных XML в запросах HTTP для именования незначительного количества объектов. Дополнительные сведения о программировании на уровне сообщений см. в разделах Использование контрактов сообщений, Программирование служб на уровне канала и Взаимодействие с приложениями POX.

Понимание иерархии требований

В контракте службы группируются операции, задаются шаблон обмена сообщениями, типы сообщений и типы данных, передаваемых в этих сообщениях, а также указываются категории поведения во время выполнения, которые должны быть предусмотрены в реализации для поддержки контракта (например, может требоваться, чтобы сообщения шифровались и подписывались). В самом контракте службы точно не указывается, как эти требования удовлетворяются, а указывается только то, что они должны быть удовлетворены. Тип шифрования или способ, с помощью которого подписывается сообщение, соответствует реализации и конфигурации совместимой службы.

Обратите внимание на то, каким способом контракт предъявляет определенные требования к реализации контракта службы и конфигурации среды выполнения для добавления поведения. Набор требований, которые должны быть удовлетворены для передачи службы в использование, основывается на предыдущем наборе требований. Если контракт предъявляет некоторые требования к реализации, реализация может предъявлять дополнительные требования к конфигурации и привязкам, которые позволяют запустить службу. Наконец, ведущее приложение должно также поддерживать любые требования, добавляемые конфигурацией и привязками службы.

Этот аддитивный процесс предъявления требований важно иметь в виду при разработке, реализации, настройке и размещении приложения службы Windows Communication Foundation (WCF). Например, в контракте может указываться, что ему требуется для поддержки сеанса. В этом случае необходимо настроить привязку для поддержки этого требования контракта, иначе реализация службы работать не будет. Если же служба требует встроенной проверки подлинности Windows и размещается в службах IIS, в веб-приложении, где находится служба, должна быть включена встроенная проверка подлинности Windows и отключена поддержка анонимных обращений. Дополнительные сведения о функциях и влиянии различных типов ведущих приложений служб см. в разделе Размещение служб.

См. также

Основные понятия

Создание контрактов служб
Реализация контрактов служб