Конечная точка – представляет собой совокупность адреса, контракта и привязки.
Адреса
Формат адреса
[базовый адрес]/[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)