70-503: Configuring the Client Endpoint

Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation.

Konfiguracja punkty wyjściowego (ang. endpoint) po stronie klienta przypomina tą, którą określa się w serwisie. Tak zwane ABC konfiguracji serwisu to address, binding, oraz contract. Konfiguracja może zostać przeprowadzona w sposób deklaratywny – z wykorzystaniem plików konfiguracyjnych, lub imperatywnie – przez kod.

Przykładowa deklaracja w postaci znaczników XML:

   1: <system.serviceModel>
   2:   <client>
   3:     <endpoint address="http://localhost:8080/UpdateService"
   4:     binding="wsHttpBinding"
   5:     contract="IUpdateService"
   6:     name="WSHttpBinding_IUpdateService">
   7:     </endpoint>
   8:   </client>
   9: </system.serviceModel>

W C# będzie to wyglądało następująco:

   1: EndpointAddress endpoint = new EndpointAddress("http://localhost:8080/UpdateService");
   2: UpdateServiceProxy proxy = new UpdateServiceProxy(new WSHttpBinding(), endpoint);

Adres określa położenie serwisu, binding określa sposób komunikacji, kontrakt – dostępne metody. Atrybut name nadaje nazwę punktowi wyjściowemu, przez co można odwołać się do niego w sposób programowy:

   1: UpdateServiceProxy proxy = new UpdateServiceProxy("WSHttpBinding_IUpdateService");

Jeżeli korzystamy ze standardowych bindingów zastosowane zostaną ich domyślne ustawienia. Aby określić dodatkowe opcje należy wykorzystać bindingConfiguration:

   1: <system.serviceModel>
   2:   <client>
   3:     <endpoint address="http://localhost:8080/UpdateService"
   4:     binding="WSHttpBinding"
   5:     bindingConfiguration="NameOfBinding"
   6:     contract="IUpdateService" />
   7:   </client>
   8:   <bindings>
   9:     <WSHttpBinding>
  10:       <binding name="NameOfBinding"
  11:       receiveTimeout="00:10:00"
  12:       sendTimeout="00:10:00"
  13:       openTimeout="00:10:00"
  14:       closeTimeout="00:10:00" />
  15:     </WSHttpBinding>
  16:   </bindings>
  17: </system.serviceModel>

 

 

Tworzymy binding programowo z wczytaniem powyższych opcji:

   1: WSHttpBinding binding = new WSHttpBinding("NameOfBinding");

 

 

W sekcji behaviorConfiguration możemy określić zachowanie bindingu:

   1: <system.serviceModel>
   2:   <client>
   3:     <endpoint address="http://localhost:8080/UpdateService"
   4:     binding="WSHttpBinding"
   5:     behaviorConfiguration="UpdateClient"
   6:     contract="IUpdateService" />
   7:   </client>
   8:   <behaviors>
   9:     <endpointBehaviors>
  10:       <behavior name="UpdateClient">
  11:         <clientCredentials>
  12:           <windows allowedImpersonationLevel="Identification" />
  13:         </clientCredentials>
  14:       </behavior>
  15:     </endpointBehaviors>
  16:   </behaviors>
  17: </system.serviceModel>

Element clientCredentials zapewnia wysłanie danych dotyczących uwierzytelniania i autoryzacji do serwisu.

Informacje dodatkowe

Wymienione wcześniej elementy to nie wszystkie, które można zastosować konfigurując endpoint. Przykładowym elementem, który można dodać jest header. Kiedy zostanie on zdefiniowany w pliku konfiguracyjnym, przy każdym żądaniu do serwisu. Przykładowa konfiguracja z wykorzystaniem nagłówków:

   1: <system.serviceModel>
   2:   <client>
   3:     <endpoint address="http://localhost:8080/UpdateOrder"
   4:     binding="wsHttpBinding"
   5:     contract="IUpdateService"
   6:     name="WSHttpBinding_UpdateOrder">
   7:       <headers>
   8:         <Priority xmlns="http://tempuri.org/">Expedite</Priority>
   9:       </headers>
  10:     </endpoint>
  11:     <endpoint address="http://localhost:8080/CancelOrder"
  12:     binding="wsHttpBinding"
  13:     contract="IUpdateService"
  14:     name="WSHttpBinding_CancelOrder">
  15:       <headers>
  16:         <Priority xmlns="http://tempuri.org/">Standard</Priority>
  17:       </headers>
  18:     </endpoint>
  19:   </client>
  20: </system.serviceModel>

W powyższym przykładzie zostały zdefiniowane dwa punkty wyjściowe. W zależności od tego, który zostanie wykorzystany podczas żądania, w nagłówku zostanie przekazana wartość Standard lub Expedite (przyspieszony). Serwis w zależności od tej wartości może inaczej obsłużyć żądanie.

W następnej lekcji – dynamiczna konfiguracja serwisu.

Tagi: , , , , ,

Add comment




  Country flag
biuquote
  • Comment
  • Preview
Loading


Eastgroup.pl na facebooku