Архитектура Windows Communication Foundation
На следующем рисунке показаны основные слои архитектуры Windows Communication Foundation (WCF).
Архитектура WCF
Контракты и описания
Контракты определяют различные аспекты системы сообщений. Контракты данных описывают каждый параметр, составляющий каждое сообщение, которое может быть создано или использовано службой. Параметры сообщения определены документами языка определения схемы XML (XSD), тем самым позволяя обрабатывать документы любой системе, которая воспринимает XML. Контракт сообщения определяет конкретные части сообщения, использующие протокол SOAP, и позволяет более точно управлять частями сообщения, когда такая точность требуется при взаимодействии. Контракт службы задает фактические подписи методов службы и распространяется в качестве интерфейса в одном из поддерживаемых языков программирования, например Visual Basic и Visual C#.
Политики и привязки задают условия, необходимые для взаимодействия со службой. Например, привязка должна (как минимум) указывать используемый транспорт (например, HTTP или TCP) и кодирование. Политики содержат требования к безопасности и другие условия, которые должны быть удовлетворены для взаимодействия со службой.
Среда выполнения службы
Уровень среды выполнения службы содержит поведения, возникающие только в процессе выполнения самой операции службы, то есть поведения среды выполнения службы. Регулирование управляет количеством обрабатываемых сообщений, которое может изменяться, если запросы к службе возрастают до заранее установленного предела. Поведение при ошибке указывает, что происходит при возникновении внутренней ошибки в службе, например управляя тем, какая информация передается клиенту. (Слишком много информации может дать злоумышленнику преимущество при подключении атаки.) Поведение метаданных определяет способ и доступность метаданных для внешнего мира. Поведение экземпляра указывает, какое число экземпляров службы может выполнятся (например, одноэлементный задает один экземпляр для обработки всех сообщений). Поведение транзакции включает откат транзакционных операций при сбое. Поведение диспетчеризации — это управление обработкой сообщения инфраструктурой WCF.
Расширяемость позволяет настраивать процессы среды выполнения. Например, инспекция сообщений предоставляет возможность инспектировать части сообщений, а фильтрация параметров позволяет выполнять заранее установленные действия, возникающие в зависимости от применения фильтров к заголовкам сообщений.
Обмен сообщениями
Уровень обмена сообщениями состоит из каналов. Канал - это компонент, который обрабатывает сообщение некоторым образом, например путем проверки подлинности сообщения. Набор каналов также называется стеком каналов. Каналы оперируют сообщениями и их заголовками. Это отличается от уровня среды выполнения служб, который, главным образом, занимается обработкой содержимого тел сообщений.
Существует два типа каналов: каналы транспорта и каналы протоколов.
Каналы транспорта считывают и записывают сообщения по сети (или какой-либо другой точке связи с внешним миром). Некоторые транспорты используют кодировщик для преобразования сообщений (которые представлены в виде наборов сведений XML) в представление потока байтов, используемое в сети, и обратно. Примерами транспортов являются HTTP, именованные каналы, TCP и MSMQ. Примерами кодирования являются XML и оптимизированный двоичный тип.
Каналы протоколов реализуют протоколы обработки сообщений, обычно при чтении или записи дополнительных заголовков в сообщения. Примерами таких протоколов являются WS-Security и WS-Reliability.
Уровень обмена сообщениями демонстрирует возможные форматы данных и их шаблоны обмена. WS-Security является реализацией спецификации WS-Security, включающей безопасность на уровне обмена сообщениями. Канал обмена сообщениями WS-Reliable обеспечивает гарантированную доставку сообщений. Кодировщики предоставляют различные кодировки, которые могут использоваться в соответствии с потребностями сообщений. Канал HTTP указывает, что протокол транспортировки гипертекста (HyperText Transport Protocol) используется для доставки сообщений. Таким же образом канал TCP задает протокол TCP. Канал потока транзакций управляет шаблонами сообщений транзакций. Именованный канал включает межпроцессное взаимодействие. Канал MSMQ взаимодействие с приложениями MSMQ.
Размещение и активация
В своей конечной форме служба является программой. Как и другие программы, служба должна выполняться в исполняемом файле. Это называется локальной службой.
Службы также могут размещаться или запускаться в исполняемом файле, управляемом внешним агентом, например службами IIS или службой активации Windows (WAS). ЗНАЧЕНИЕ WAS позволяет автоматически активировать приложения WCF при развертывании на компьютере под управлением WAS. Службы также могут быть вручную запущены как исполняемые файлы (EXE-файлы). Их также можно автоматически запускать в виде служб Windows. Компоненты COM+ также можно размещать как службы WCF.