- •Практическое руководство по программной реализации wcf-служб
- •Как определить контракт службы WindowsCommunicationFoundation
- •Как реализовать контракт службы WindowsCommunicationFoundation
- •Реализация контракта службы wcf
- •Как размещать и запускать базовую службу WindowsCommunicationFoundation
- •Создание консольного приложения для размещения службы.
- •Как создать клиент Windows Communication Foundation
- •Создание клиента Windows Communication Foundation
- •Как настроить базовый клиент Windows Communication Foundation
- •Настройка клиента Windows Communication Foundation
- •Как использовать клиент Windows Communication Foundation
- •Использование клиента Windows Communication Foundation
- •Настройка служб с использованием файлов конфигурации
- •Основные разделы файла конфигурации
- •Практическое руководство. Конфигурации привязок и поведения
- •Слияние поведений
- •Как разместить службу wcf в iis
- •Создание службы, размещенной в iis
- •Служебное средство ServiceModel Metadata Utility Tool (Svcutil.Exe)
- •Функциональные возможности
- •Время ожидания
- •Настройка для различных версий
- •Доступ к документам wsdl
- •Использование программы SvcUtil.Exe
- •Типичные способы использования
- •Создание кода
- •Экспорт метаданных
- •Проверка службы
- •Загрузка метаданных
- •Создание типа XmlSerializer
- •Примеры
- •Максимальная квота на количество символов в таблице имен.
- •Вопросы безопасности
Слияние поведений
Функция слияния поведений упрощает управление поведениями в ситуациях, когда должен постоянно использоваться набор общих поведений. Эта функция позволяет задавать поведения на разных уровнях иерархии конфигурации, а также настраивать наследование службами поведений от нескольких уровней иерархии конфигурации. Проиллюстрируем это следующим образом: предположим, что в IIS имеется следующая структура виртуальных каталогов:
~\Web.config~\Service.svc~\Child\Web.config~\Child\Service.svc
А файл ~\Web.config содержите следующее:
Xml
Копировать
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Кроме того, имеется дочерний файл Web.config, расположенный в папке ~\Child\Web.config, со следующим содержимым:
Xml
Копировать
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Служба, расположенная в ~\Child\Service.svc, будет действовать таким образом, как будто бы для нее заданы и поведение serviceDebug, и поведение serviceMetadata.У службы, расположенной в ~\Service.svc, будет присутствовать только поведение serviceDebug behavior.В этой ситуации две коллекции поведений с одним и тем же именем (в данном случае пустой строкой) объединяются.
Также можно очищать коллекции поведений с помощью тега <clear> и удалять отдельные поведения из коллекции с помощью тега <remove>.Например, действие следующих двух конфигураций приведет к тому, что в дочерней службе будет только поведение serviceMetadata:
Xml
Копировать
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<remove name="serviceDebug"/>
<serviceMetadata httpGetEnabled="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Xml
Копировать
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<clear/>
<serviceMetadata httpGetEnabled="True" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
Слияние поведений проводится для безымянных коллекций поведений (как показано выше), а также для именованных коллекций поведений.
Слияние поведений работает в среде размещения IIS, в которой файлы Web.config сливаются в иерархическом порядке с корневыми файлами Web.config и machine.config.Но оно также работает и в среде приложений, где файл machine.config может объединяться с файлом App.config.
Слияние поведений применяется в конфигурациях как к поведениям конечных точек, так и к поведениям служб.
Если
коллекция дочерних поведений содержит
поведение, которое уже определено в
коллекции родительских поведений, то
дочернее поведение переопределяет
родительское.Если коллекция родительских
поведений содержит <serviceMetadata
httpGetEnabled="False" />
, а коллекция
дочерних поведений содержит<serviceMetadata
httpGetEnabled="True" />
, то дочернее
поведение переопределит в коллекции
поведений родительское поведение и
параметр httpGetEnabled примет значение «true».