Учебники

WCF — Архитектура

WCF имеет многоуровневую архитектуру, которая предлагает широкие возможности для разработки различных распределенных приложений. Архитектура объясняется ниже подробно.

Архитектура WCF

контракты

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

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

  • Контракт данных — данные, которыми обменивается сервис, определяются контрактом данных. И клиент, и сервис должны быть согласованы с договором на данные.

  • Контракт сообщенияконтракт данных контролируется контрактом сообщения. Он в первую очередь выполняет настройку форматирования типов параметров сообщений SOAP. Здесь следует отметить, что WCF использует формат SOAP для связи. SOAP означает простой протокол доступа к объектам.

  • Политика и связывание. Существуют определенные предварительные условия для связи со службой, и такие условия определяются политикой и обязательным договором. Клиент должен следовать этому контракту.

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

Контракт данных — данные, которыми обменивается сервис, определяются контрактом данных. И клиент, и сервис должны быть согласованы с договором на данные.

Контракт сообщенияконтракт данных контролируется контрактом сообщения. Он в первую очередь выполняет настройку форматирования типов параметров сообщений SOAP. Здесь следует отметить, что WCF использует формат SOAP для связи. SOAP означает простой протокол доступа к объектам.

Политика и связывание. Существуют определенные предварительные условия для связи со службой, и такие условия определяются политикой и обязательным договором. Клиент должен следовать этому контракту.

Сервис Runtime

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

  • Throttling Behavior — управляет количеством обработанных сообщений.

  • Поведение ошибки — Определяет результат возникновения любой внутренней ошибки службы.

  • Metadata Behavior — определяет доступность метаданных для внешнего мира.

  • Поведение экземпляра — определяет количество экземпляров, которые необходимо создать, чтобы сделать их доступными для клиента.

  • Поведение транзакции — позволяет изменить состояние транзакции в случае любого сбоя.

  • Dispatch Behavior — контролирует способ обработки сообщения инфраструктурой WCF.

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

  • Фильтрация параметров — показывает процесс проверки параметров метода до его вызова.

Throttling Behavior — управляет количеством обработанных сообщений.

Поведение ошибки — Определяет результат возникновения любой внутренней ошибки службы.

Metadata Behavior — определяет доступность метаданных для внешнего мира.

Поведение экземпляра — определяет количество экземпляров, которые необходимо создать, чтобы сделать их доступными для клиента.

Поведение транзакции — позволяет изменить состояние транзакции в случае любого сбоя.

Dispatch Behavior — контролирует способ обработки сообщения инфраструктурой WCF.

Параллельное поведение — управляет функциями, которые выполняются параллельно во время обмена данными между клиентом и сервером.

Фильтрация параметров — показывает процесс проверки параметров метода до его вызова.

обмен сообщениями

Этот уровень, состоящий из нескольких каналов, в основном имеет дело с содержимым сообщения, которое должно быть передано между двумя конечными точками. Набор каналов формирует стек каналов, и два основных типа каналов, которые составляют стек каналов, являются следующими:

  • Транспортные каналы. Эти каналы находятся в нижней части стека и отвечают за отправку и получение сообщений с использованием транспортных протоколов, таких как HTTP, TCP, Peer-to-Peer, Named Pipes и MSMQ.

  • Каналы протоколов. Эти каналы, также называемые многоуровневыми каналами, присутствуют в верхней части стека и реализуют протоколы проводного уровня путем изменения сообщений.

Транспортные каналы. Эти каналы находятся в нижней части стека и отвечают за отправку и получение сообщений с использованием транспортных протоколов, таких как HTTP, TCP, Peer-to-Peer, Named Pipes и MSMQ.

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

Активация и хостинг

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

IIS — IIS расшифровывается как Internet Information Service. Он предлагает множество преимуществ использования протокола HTTP сервисом. Здесь не требуется иметь код хоста для активации сервисного кода; вместо этого сервисный код активируется автоматически.

Служба активации Windows — широко известная как WAS и поставляется с IIS 7.0. Здесь возможна связь как на основе HTTP, так и без HTTP, с использованием протоколов TCP или Namedpipe.

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

Служба Windows — размещение службы WCF с этим механизмом является преимуществом, поскольку службы остаются активированными и доступными для клиента из-за отсутствия активации во время выполнения.