Вы когда нибудь отправяли письмо? Неважно по обычной или эклектронной почте! Если не ввести аддрес — то почтальен никогда не будет знать куда доставить письмо. Собственно если аддресат не зарегестрирован по введенному аддресу — письмо даже с аддресом врятли дойдет. Тоже самое и с сервисами — если клиент не знает где находиться сервис, то сообщения которые он ему отошлет — никогда не дойдут до сервиса, так же как и сервис — если он не знает где слушать — пропустит сообщение.
В одной из книг прочитал, что для сервисов есть три необходимые вещи, которые называются ABC of WCF:
A — Address , аддресс нашего сервиса, чтобы клиенты знали КУДА отправлять сообщения.
B — Bindings, определяют как сообщения отосланы или приняты.
C — Contracts — про них мы говорили в прошлых постах.
За что собственно отвечают биндинги:
1. За протокол который используется.
2. За формат сообщения которые принимается или отсылается..
3. Детали.
Address
Первая буква в ABC of WCF. Каждый аддресс сервиса ( далее ендпоинт ), должна иметь уникальный аддресс — расположение нашего сервиса. Точно так же как и веб сайты в интернете.Аддресс ендпоинта состоит их таких частей:
1. Схема протокола транспорта — определяет по какому протоколу передается сообщение, это есть начало аддреса нашего сервиса.
2. Аддрес сервиса — собственно положение сервиса, например localhost или thisismywebservice.com
3. Port — порт который наш сервис слушает:)
4. Path — путь ресурса на сервисе. Например *.svc файла.
Самое интересное среди перечесиленных — эт опротоколы транспорта. На них мне хотелось бы остановиться поподробнее:
Http & HttpS — самый обычный протокол, который чаще всего используется для коммуникации через интернет.
Примеры:
http://localhost:8080/CalculatorService
http://localhost/CalculatorService
https://localhost:83/CalculatorService
TCP — очень быстрый бинарный протокол, который позволяет организовывать связи, прекрасный выбор для сценариев в которых сервисы работают в интранете.
Примеры:
net.tcp://localhost:801/Service1
Named Pipe — прекрасный выбор для коммуникации между сервисами в случае их работы на одной машине. В данном случае используется общий участок памяти через который сервиса могут обмениваться сообщениями.
Примеры:
net.pipe://localhost/PipeCalculatorService1
MSMQ — Microsoft Message Queue — использование в случае если нужна коммуникации когда сервис или клиент будет выключен. Работа данного протокола очень похожа на автоответчик — Вы звоните человеку, которого нету дому, оставляете ему сообщение, а когда он возвращается он прослушивает сообщения который были оставленны ему.
Примеры:
net.msmq://localhost
Также вы можете написать свой протокол:)
Behavors — Поведения
С помощью задвания поведений вы можете контроллировать как себя поведет сервис в той или иной ситуации. Вы можете задавать 4 уровня поведений:
Поведение сервиса, поведения ендпоинта, поведение операции, поведение контракта.
В следующем посте мы поговорим про то какие типы биндингов существуют.
Полезные ссылки:
http://msdn.microsoft.com/en-us/library/ms733769.aspx — статья расскзывающая про преимущества разных типов протоколов.
http://www.jmedved.com/2010/03/named-pipes-in-wcf/ — статья рассказывающая об использованиее Named Pipes.
Уведомление: Некоторые интересные ссылки (Март) | Александр Богатырев: сфера
Уведомление: Технические материалы по продуктам и решениям Microsoft на русском языке – апрель 2011 | Alexander Knyazev: блог
Уведомление: Ежемесячный дайджест технических материалов. | Тверской MCP-Клуб
Хорошо! Только режет опять же, в русском языке Address = Адрес 🙂
И «ендпоинт».. думаю более понятно будет «конечная точка»
Читаю дальше!
НравитсяНравится
или я ошибаюсь, или «Каждый аддресс сервиса ( далее ендпоинт )» термин ендпоинт имеет свое определение, но никак нельзя его ставить в соответствие адресу. ABC — endpoint.
НравитсяНравится
Автор, ты в школе вообще учился? Как можно писать с такими ошибками? Слово «аддресс» вубило просто.
НравитсяНравится