обзор
Этот пост о понимании некоторых деталей нижнего уровня о конечных точках. Как мы уже говорили ранее, конечная точка имеет свои ABC.
- А для адреса
- B для связывания
- C для контракта
В конечном итоге Windows Communication Foundation — это платформа для создания служб, обрабатывающих сообщения XML. Весь смысл WCF для приложений, чтобы общаться через сети.
Windows Communication Foundation (WCF) использует привязки, чтобы определить, как он взаимодействует с другим программным обеспечением. Клиент должен будет включить те же привязки, что и в сервисе.
Условия для изучения в отношении Привязки:
- Транспорт
- кодирование
- Детали протокола
Транспортный протокол
Windows Communication Foundation позволяет передавать сообщения с использованием разных транспортных протоколов.
- Протокол передачи гипертекста (HTTP)
- Протокол управления передачей (TCP)
- Очередь сообщений (также известная как MSMQ)
- Именованные трубы
Http
HTTP использует традиционный шаблон запроса / ответа. HTTP не имеет состояния, поэтому при наличии многостраничных транзакций приложение (сервер и клиент) должно поддерживать состояние. Основное значение HTTP — совместимость с клиентами, не являющимися WCF.
TCP
TCP основан на соединении и обеспечивает сквозное обнаружение и исправление ошибок. TCP является отличным выбором, поскольку он обеспечивает надежную доставку данных. Он обрабатывает потерянные пакеты и дубликаты пакетов. Транспорт TCP оптимизирован для сценариев, в которых оба конца используют WCF. Это самый быстрый из всех привязок. TCP обеспечивает дуплексную связь и может использоваться для реализации дуплексных контрактов, даже если клиент находится за трансляцией сетевых адресов (NAT).
Примечание . Дуплексный контракт позволяет клиентам и серверам связываться друг с другом. Вызовы могут быть инициированы независимо от другого. Он состоит из двух односторонних контрактов.
Именованные трубы
Named Pipes идеально подходит для двух или более приложений WCF на одном компьютере, и вы хотите предотвратить любой обмен данными с другим компьютером. Именованные каналы эффективны, потому что они связаны с ядром операционной системы Windows, используя раздел общей памяти, который процессы могут использовать для связи.
MSMQ
MSMQ позволяет приложениям взаимодействовать в отказоустойчивом режиме. Очередь — это временное хранилище, из которого сообщения могут быть надежно отправлены и получены. Это обеспечивает связь между сетями и между компьютерами под управлением Windows, которые не всегда могут быть подключены.
кодирование
Типы кодирования представляют, как данные структурированы по проводам. Существует 3 основных формата:
- Текст
- двоичный
- MTOM
Текст — для взаимодействия
В тексте используется кодировка base64, которая позволяет делать сообщения на 30% больше. Если вы отправляете двоичные данные, это может привести к большим накладным расходам.
Бинарный — для скорости
Это самая быстрая кодировка. Если вы не отправляете очень большие сообщения, двоичный формат является идеальным (при условии, что текст не нужен для совместимости)
MTOM — для крупных объектов
MTOM — это механизм оптимизации передачи сообщений W3C, метод эффективной отправки двоичных данных в веб-службы и из них. MTOM не использует кодировку base64 для двоичных вложений, сохраняя общий размер небольшим. MTOM основан на открытых спецификациях и, следовательно, в значительной степени совместим.
Подробности протокола сообщения
WCF использует SOAP для своего сетевого протокола обмена сообщениями. SOAP, он же Simple Object Access Protocol, определяет способ обмена структурированной информацией при реализации веб-служб в компьютерных сетях. Это полагается на XML для его формата сообщения.
Одним из больших преимуществ является то, что SOAP может легко туннелировать поверх существующих брандмауэров и прокси-серверов без изменений Недостатком SOAP является то, что он имеет подробный формат XML и может быть медленным.
Одной из альтернатив SOAP является JSON / XML.
Что касается SOAP, существует ряд спецификаций WS- *. Эти спецификации WS- * можно разбить на различные категории:
Спецификации обмена сообщениями | WS-адресация, WS-Enumeratio, WS-Eventing, WS-Transfer |
Спецификации безопасности | WS-Security: Защита сообщений SOAP, WS-Security: UsernameToken Profil, WS-Security: Профиль маркера сертификата X.509, WS-SecureConversation, WS-SecurityPolicy, WS-Trust, WS-Federation, WS-Profil Active Requestor Profil, WS Профиль пассивного запроса WS-Security: привязка Kerberos |
Спецификации надежного обмена сообщениями | WS-ReliableMessaging |
Спецификации транзакций | WS-координация, WS-AtomicTransaction, WS-BusinessActivity |
Метаданные Технические характеристики | WS-Policy, WS-PolicyAssertions, WS-PolicyAttachment, WS-Discover, WS-MetadataExchang, WS-MTOMPolicy |
Спецификации управления | WS-Managemen, WS-Management Catalog, WS-ResourceTransfe, |
Профили спецификаций | WS-I Базовый профиль |
Цели
В этой практической лаборатории вы научитесь:
- Создание виртуальной машины с помощью Visual Studio 2013 RC на портале управления Windows Azure
- Загрузите и установите SQL Server 2012 Express
Предпосылки
Для выполнения этой практической работы требуется следующее:
- Visual Studio 2010 — 2013
- Закончены шаги по поводу моего предыдущего поста ( http://blogs.msdn.com/b/brunoterkaly/archive/2013/10/18/getting-started-with-wcf-windows-communication-foundation-running-and-debugging- fast.aspx )
Настроить
Чтобы выполнить упражнения в этой практической лаборатории, вам нужно настроить свою среду.
- Запустите Visual Studio и откройте предыдущий проект здесь: ( http://blogs.msdn.com/b/brunoterkaly/archive/2013/10/18/getting-started-with-wcf-windows-communication-foundation-running-and -debugging-fast.aspx )
Как изменить привязки с помощью редактора конфигурации службы WCF
В следующем разделе мы включим протокол надежного обмена сообщениями . Это полезно, когда качество сетевого подключения потенциально очень низкое. Протокол WS-ReliableMessaging (или WS-RM) предназначен для создания надежных каналов связи по ненадежным соединениям. Очень просто, это обеспечивает инфраструктуру, которая обеспечивает явное подтверждение сообщений в коммуникационном потоке
Задача 1. Запуск редактора конфигурации службы WCF
Эта задача касается использования редактора конфигурации WCF Servcie для создания новой конфигурации привязки.
-
Вам нужно будет вернуться к решению, созданному в предыдущем сообщении в блоге. В обозревателе решений щелкните правой кнопкой мыши файл App.config и выберите « Изменить конфигурацию WCF» . Это вызовет Редактор конфигурации службы WCF .
Редактирование обязательной информации
-
В этом разделе мы создадим новую привязку. В разделе « Конфигурация » вы щелкните правой кнопкой мыши на Biindings .
Редактирование привязок
-
После щелчка правой кнопкой мыши на узле Binding выберите New Binding Configuration .
Добавление новой привязки
-
Появится список привязок . Выберите wsHttpBinding . Выбрав wsHttpBinding, мы изменим атрибуты этого типа привязки .
Выбор wsHttpBinding
-
Нам нужно будет указать имя для этой новой привязки.
Предоставление имени новой привязке
-
Мы установим Расписание сеансов собственности на включен . Мы оставим другие атрибуты в покое.
Включение надежных сессий
Задача 2 — Присоединение новой привязки к конечной точке
В этой задаче мы прикрепим нашу вновь созданную привязку к конечной точке для wsHttpBinding .
-
Теперь вы вернетесь к своим конечным точкам и прикрепите привязку, которую мы только что создали. Напомним, имя из BindingReliableMessaging . Обратите внимание, что мы выбрали конечную точку », чья ** привязка — wsHttpBinding .
Присоединение новой привязки к нашей конечной точке
-
Вернитесь в меню и сохраните изменения в файле App.config .
Сохранение изменений
-
Обратите внимание, что если мы откроем App.config, то увидим, что создана новая привязка ( BindingReliableMessaging ).
Просмотр изменений
-
Обратите внимание, что конечная точка также была настроена с помощью редактора конфигурации службы WCF. Мы закончили — мы изменили привязку для соответствия желаемому поведению ( Reliable Messaging ).
Проверка того, что новая привязка присоединена к конечной точке
App.config
<?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true"/> </appSettings> <system.web> <compilation debug="true"/> </system.web> <!--When deploying the service library project, the content of the config file must be added to the host's app.config file. System.Configuration does not support config files for libraries. --> <system.serviceModel> <bindings> <wsHttpBinding> <binding name="BindingReliableMessaging"> <reliableSession enabled="true"/> </binding> </wsHttpBinding> </bindings> <services> <service behaviorConfiguration="FlipCaseService.Service1Behavior" name="FlipCaseService.FlipCaseService"> <endpoint address="flipcase/wsAddress" binding="wsHttpBinding" bindingConfiguration="BindingReliableMessaging" contract="FlipCaseService.IFlipCaseService"/> <endpoint address="flipcase/basic" binding="basicHttpBinding" contract="FlipCaseService.IFlipCaseService"/> <endpoint address="net.tcp://localhost/FlipCaseNetTcp" binding="netTcpBinding" contract="FlipCaseService.IFlipCaseService"/> <endpoint address="flipcase/mex" binding="mexHttpBinding" contract="IMetadataExchange"/> <host> <baseAddresses> <add baseAddress="http://localhost:8080"/> </baseAddresses> </host> </service> </services> <behaviors> <serviceBehaviors> <behavior name="FlipCaseService.Service1Behavior"> <!--To avoid disclosing metadata information, set the values below to false before deployment --> <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/> <!--To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> <serviceDebug includeExceptionDetailInFaults="False"/> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>
Резюме
В этом посте вы узнали несколько вещей:
- Как использовать редактор конфигурации службы WCF
- Как добавить надежную передачу сообщений в конечную точку wsHttpBinding
В следующем посте мы узнаем, как использовать редактор конфигурации службы WCF для создания необходимых параметров конфигурации для клиентского приложения, которое использует наш FlipCaseService .