• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии
  • Все
  • Новости
  • События
  • Статьи
  • Блоги

WCF 4.0: упрощенная конфигурация

WCF 4.0: упрощенная конфигурация

natale
08.03.2010 22:32

В ближайших нескольких постах предлагаю ознакомиться с новыми возможностями в WCF 4.0, особенно учитывая, что официальный выход .Net 4.0 запланирован на 12 апреля, т.е. осталось набраться терпения еще всего лишь на 35 дней!

Начнем мы знакомство с такого улучшения как упрощенная конфигурация.

Endpoint по умолчанию – позволяет не прописывать явно в секции <configuration> никаких конечных точек (endpoint).

ServiceHost serviceHost = new ServiceHost(typeof(CalculatorService),
    new Uri("http://localhost/CalculatorService"), 
    new Uri("net.tcp://localhost/CalculatorService"));
serviceHost.Open();

Console.WriteLine("WCF Service is running.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();

serviceHost.Close();



<configuration>
</configuration>

WCF 4.0 автоматически сформирует конечную точку (endpoint) и присвоит ей соответствующие параметры, в частности, сопоставит схему http c BasicHttpBinding, а net.tcp - c NetTcpBinding. При это файл web.config не содержит никаких настроек, тэг <service> (и его подчиненные тэги - <endpoint>) в нем отсутствует.

Binding/behaivor по умолчанию (nameless behaivor) – позволяют сервису наследовать определенные по умолчанию привязки (binding) и поведения (behaivor), эти привязки и поведения определены на более высоком уровне иерархии (machine.config → rootweb.config → web.config и т.д.), что позволяет так же создавать гибкую иерархическую модель наследования настроек.

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="" maxReceivedMessageSize="9999999">
          <readerQuotas maxArrayLength="9999999"/>
        </binding>
      </basicHttpBinding>      
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
</system.serviceModel>

Для того чтобы применить поведение (behaivor) по умолчанию необходимо либо оставить его атрибут name незаполненным, либо пропустить его в определении.

ProtocolMapping – определяет сопоставление привязки (binding) и схемы/протокола (например, HTTP или NET.TCP ), которое применяется по умолчанию. Если обратиться к первому примеру (Endpoint по умолчанию), то имеено за счет ProtocolMapping для cхемы http использовался BasicHttpBinding. ProtocolMapping поддерживает иерархическое определение, т.е. machine.config → rootweb.config → web.config и т.д.. Это позволяется определить сопоставление как глобально, так и локально.

<protocolMapping>
  <add scheme="http" binding="basicHttpBinding"/>
  <add scheme="net.tcp" binding="netTcpBinding"/>
  <add scheme="net.pipe" binding="netNamedPipeBinding"/>
  <add scheme="net.msmq" binding="netMsmqBinding"/>
</protocolMapping>

или

<protocolMapping>
  <add scheme="http" binding="basicHttpBinding"/>
  <add scheme="net.tcp" binding="netTcpBinding"/>
</protocolMapping>
<protocolMapping>
  <clear scheme="http" />
  <add scheme="http" binding="customBinding"
   bindingConfiguration="binaryHttp" />
</protocolMapping>
<bindings>
  <customBinding>
    <binding name="binaryHttp">
      <binaryMessageEncoding/>
      <httpTransport/>
    </binding>
  </customBinding>
</bindings>

Стандартные endpoint (атрибут kind) - позволяет для конечных точек (endpoint) определить набор постоянных значений (значений по умолчанию). Например, конечная точка (endpoint) метаданных всегда реализует контракт IMetadataExchange, тогда как WebHttpEndpoint всегда соответствует определенное поведение (behaivor). Стандартные конечные точки (endpoint) как раз позволяют определить набор значений по умолчанию единожды и далее ссылаться на созданную стандартную конечную точку (endpoint), именованную сущность. Стандартная конечная точка (endpoint) может быть задана на любом уровне иерархии.

<services>
  <service>
    <endpoint isSystemEndpoint="true" kind="udpDiscoveryEndpoint" />
  </service>
</services>
<standardEndpoints>  
  <udpDiscoveryEndpoint>
     <standardEndpoint multicastAddress="soap.udp://239.255.255.250:3702" /> 
  </udpDiscoveryEndpoint>
</ standardEndpoints >

.SVC-less конфигурация – позволяет не создавать отдельно файл .svc для сервиса, а определить соответствие между адресом сервиса и контрактом, который он реализует, на логическом уровне (web.config).

<system.serviceModel>
    <serviceHostingEnvironment>      
      <serviceActivations>
        <add relativeAddress="Calculator.svc" 
         service="CalculatorService"/>
      </serviceActivations>
    </serviceHostingEnvironment>
    <services>
      <service name="CalculatorService">
        <endpoint binding="webHttpBinding"
           contract="ICalculatorService" />        
      </service>
    </services>
</system.serviceModel>

Веб-каст с примерами по обсуждаемым возможностям можно найти на портале TechDays.ru - "WCF 4.0 в примерах. Часть 1.".

natale
08.03.2010 22:32
Комментариев:0 RSS Просмотров:1108
Теги: WCF

Natale

natale
WCF, .NET
  • Блог

Облако тегов

.net appfabric azure dublin iis interop microsoft платформа nettcp nlb rest setup project silverlight sinergija velocity visual studio wcf wf wif wsdl конференция
Строишь сложные системы? Хостинг от Parking.Ru

Записи

Популярные
  • k0stya > Система контроля версий для базы данных
  • Oxozle > Руководство по отладке многопоточных приложений в Visual Studio 2010
  • Jeje > Тюнинг производительно­сти для ASP.NET. Часть 1
  • Jeje > Razor - новый движок представлений в ASP.NET
  • Oxozle > Профилирование приложений в Visual Studio 2010
  • Jeje > NerdDinner. Шаг 1: Новый проект
  • Oxozle > Visual Studio 2010 Productivity Power Tools
  • sergeypopov > Ссылки к докладу «Расширяем Visual Studio 2010»
  • Jeje > NerdDinner. Шаг 2: Создание базы данных
  • mezastel > Паттерн-мэтчинг на языке C#
Все популярные записи
Обсуждаемые
  • k0stya > Система контроля версий для базы данных
  • Oxozle > Руководство по отладке многопоточных приложений в Visual Studio 2010
  • XaocCPS > Срочно! Вышел Razor View Engine и открыто имя нового проекта WebMatrix
  • mvcdev > Локализация ASP.NET приложений. Стиль кодирования
  • XaocCPS > Pivot-коллекция (silverlight) для навигации по статьям журнала MSDN Magazine
  • Jeje > NerdDinner. Шаг 2: Создание базы данных
  • Sharomank > Расширение Regex Tester для Visual Studio 2010
  • XaocCPS > Анонсирован SQL Server Compact Edition 4
  • Oxozle > Visual Studio 2010 Productivity Power Tools
  • XaocCPS > Выпущена библиотека ADO.NET Entity Framework Feature CTP 4
Все обсуждаемые записи

Блоги

Новые
  • Stanislav Gornakov [MVP]> Stanislav Gornakov
  • k0stya> k0stya
  • ][tiger> Just do IT - просто дует
  • Oxozle> KLUBS
  • mvcdev> WebDev
  • VitaliyP> PanarinV
  • Tamifist> Tamifist
  • kir> KLypkan
  • sadomovalex> Alexey Sadomov
  • noetic> Систематизация автоматизации
Обсуждаемые
  • mihailik> Олег Михайлик
  • ceo> Нотатник Вiктора Шатохiна [MSFT]
  • gaidar> Gaidar Magdanurov
  • MikhailChernomo­rdikov> Mikhail Chernomordikov [MSFT]
  • Alexander Lozhechkin [MSFT]> Alexander Lozhechkin
  • agladkik> Andrey Gladkikh: Microsoft Dynamics
  • sergun> Sergey Zwezdin
  • beerbong> Bong Blog
  • sos> Dmitry Soshnikov [MSFT]
  • not-a-kernel-gu­y> Зеркало: Not a kernel guy
О сайте   Свяжитесь с нами   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru