Конфигурирование и хостинг сервисов WCF

Конечная точка – представляет собой совокупность адреса, контракта и привязки.

Адреса

Формат адреса

[базовый адрес]/[URN необязательный ]

Формат базового адреса

[транспорт]://[IP или домен][:порт необязательный ]


Примеры адресов:

  • http://127.0.0.1:8001
  • http:// localhost:8001/MyService
  • net.tcp://localhost:8002/MyService
  • net.pipe://localhost:MyPipe
  • net.msmq://localhost/private/MyService
  • net.msmq://localhost/MyService

Адреса TCP

Адреса TCP содержат транспортный префикс net.tcp


В адрес можно включить номер порта, например:
net.tcp://localhost:8002/MyService

Если порт не указан, по умолчанию используется порт 808
net.tcp://localhost:/MyService


Два адреса TCP, могут совместно использовать один порт:
net.tcp://localhost:8002/MyService1
net.tcp://localhost:8002/MyService2

Адреса HTTP

Адреса HTTP содержат транспортный префикс http или префикс безопасного транспорта https В адрес можно включить номер порта, например:
http:// localhost:8001/MyService


Если порт не указан, по умолчанию используется порт 80
http://localhost:/MyService


Для https по умолчанию используется TCP-порт 443
https://localhost:/MyService


Два адреса HTTP, могут совместно использовать один порт:
http://localhost:8001/MyServic1
http://localhost:8001/MyServic2

Адреса IPC

Адреса IPC содержат транспортный префикс net.pipe, который указывает на использование именованных каналов Windows.

В WCF – службы использующие именованные каналы, могут принимать вызовы только с того же компьютера.

Адрес должен содержать явно заданное имя локального компьютера или localhost, за которым следует строка с именем канала, например: net.pipe://localhost:MyPipe


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

Адреса MSMQ

Адреса MSMQ содержат транспортный префикс net.msmq, который указывает на использование механизма “MSMQ”.

Адрес должен содержать имя очереди.

При работе с приватными очередями необходимо указать тип очереди:
net.msmq://localhost/private/MyQueue

Для публичных очередей тип очереди можно не указывать:
net.msmq://localhost/MyQueue

Адреса P2P

Адреса одноранговых сетей содержат транспортный префикс net.p2p, который указывает на использование транспорта одноранговых сетей Windows.

Формат адреса
net.peer://{meshname}[:port]/{service location}

Адрес должен содержать явно заданное имя одноранговой сети, уникальный путь и порт, например:
net.p2p://chatMesh/MyService

Если порт не указан, по умолчанию подразумевается порт 0, транспортный протокол выберет номер порта случайным образом, но можно указать и конкретный порт.

Каналы и привязки

Канал – это «труба», по которой курсируют все сообщения, получаемые и отправляемые WCF приложением.

Стек каналов – это комбинация каналов.

Чтобы упростить создание стеков каналов – используют привязки.

Привязка (binding) представляет собой набор настроек, относящихся к транспортному протоколу, кодированию сообщений, коммуникационной схеме, надежности, безопасности, распространению транзакций и совместимости.

Привязка Класс привязки Кодирование
Базовая привязка BasicHttpBinding Text, MTOM
Привязка TCP NetTcpBinding Binary
Привязка одноранговой сети NetPeerTcpBinding Binary
Привязка IPC NetNamedPipeBinding Binary
Привязка WS WSHttpBinding Text, MTOM
Федеративная привязка WS WSFederationHttpBinding Text, MTOM
Дуплексная привязка WS WSDualHttpBinding Text, MTOM
Привязка MSMQ NetMsmqBinding Binary
Интеграционная привязка MSMQ MsmqIntegrationBinding Binary

WCF поставляется с тремя кодировщиками:

  • Текстовый
  • Бинарный
  • MTOM (Message Transmission Optimization Mechanism)

Контракты

Контракт (Contract) — стандартный, платформенно-независимый способ описания того, что делает данная служба.

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

WCF определяет четыре разновидности контрактов:

  • Контракты служб.
  • Контракты данных.
  • Контракты ошибок.
  • Контракты сообщений.

Контракты обратного вызова (Дуплексные операции) Дуплексная передача – это способность одновременно передавать и получать сообщения.

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

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

Контракты данных определяют, какие типы данных принимаются и передаются службой. WCF определяет косвенные контракты данных для встроенных типов (таких как int, float, string и др.)

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

Хостинг

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

Варианты хостинга

Автохостинг (Self-Hosting)

  • Хостинг в службах Windows
  • Хостинг WAS (Windows Activation Services)
  • Хостинг IIS (Internet Information Services)

Обновлено: 04.07.2021 — 16:29

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.