Konfiguracja klienta

Za pomocą konfiguracji klienta programu Windows Communication Foundation (WCF) można określić adres, powiązanie, zachowanie i kontrakt, właściwości "ABC" punktu końcowego klienta, których klienci używają do łączenia się z punktami końcowymi usługi. Element <klienta> ma element punktu końcowego><, którego atrybuty są używane do konfigurowania kontrolerów ABC punktu końcowego. Te atrybuty zostały omówione w sekcji Konfigurowanie punktów końcowych .

Element punktu końcowego <>zawiera również element metadanych>, który służy do określania ustawień importowania i eksportowania metadanych,< elementu nagłówków>, który zawiera kolekcję niestandardowych nagłówków adresów i <element tożsamości>, który umożliwia uwierzytelnianie punktu końcowego przez inne punkty końcowe wymieniające komunikaty z nim.< Nagłówki <>i <elementy tożsamości> są częścią EndpointAddress elementu i zostały omówione w artykule Adresy. Linki do tematów wyjaśniających użycie rozszerzeń metadanych znajdują się w sekcji Konfigurowanie metadanych .

Konfigurowanie punktów końcowych

Konfiguracja klienta została zaprojektowana tak, aby umożliwić klientowi określenie co najmniej jednego punktu końcowego, z których każda ma własną nazwę, adres i kontrakt, z każdym odwołującym <się do powiązań> i <zachowań> elementów w konfiguracji klienta, które mają być używane do konfigurowania tego punktu końcowego. Plik konfiguracji klienta powinien mieć nazwę "App.config", ponieważ jest to nazwa oczekiwana przez środowisko uruchomieniowe programu WCF. W poniższym przykładzie przedstawiono plik konfiguracji klienta.

<?xml version="1.0" encoding="utf-8"?>  
<configuration>  
  <system.serviceModel>  
        <client>  
          <endpoint  
            name="endpoint1"  
            address="http://localhost/ServiceModelSamples/service.svc"  
            binding="wsHttpBinding"  
            bindingConfiguration="WSHttpBinding_IHello"  
            behaviorConfiguration="IHello_Behavior"  
            contract="IHello" >  
  
            <metadata>  
              <wsdlImporters>  
                <extension  
                  type="Microsoft.ServiceModel.Samples.WsdlDocumentationImporter, WsdlDocumentation"/>  
              </wsdlImporters>  
            </metadata>  
  
            <identity>  
              <servicePrincipalName value="host/localhost" />  
            </identity>  
          </endpoint>  
            <!-- Add another endpoint by adding another <endpoint> element. -->
          <endpoint  
            name="endpoint2">  
           //Configure another endpoint here.  
          </endpoint>  
        </client>  
  
<!-- The bindings section references by the bindingConfiguration endpoint attribute.   -->
    <bindings>  
      <wsHttpBinding>  
        <binding name="WSHttpBinding_IHello"
                 bypassProxyOnLocal="false"
                 hostNameComparisonMode="StrongWildcard">  
          <readerQuotas maxDepth="32"/>  
          <reliableSession ordered="true"
                           enabled="false" />  
          <security mode="Message">  
           <!-- Security settings go here.   -->
          </security>  
        </binding>  
        <binding name="Another Binding"  
          <!-- Configure this binding here. -->  
        </binding>  
          </wsHttpBinding>  
     </bindings>  
  
<!-- The behavior section references by the behaviorConfiguration endpoint attribute.   -->
        <behaviors>  
            <endpointBehaviors>  
                <behavior name=" IHello_Behavior ">  
                    <clientVia />  
                </behavior>  
            </endpointBehaviors>  
        </behaviors>  
  
    </system.serviceModel>  
</configuration>  

Opcjonalny name atrybut jednoznacznie identyfikuje punkt końcowy dla danego kontraktu. Jest on używany przez element ChannelFactory<TChannel> lub ClientBase<TChannel> , aby określić, który punkt końcowy w konfiguracji klienta jest docelowy i musi zostać załadowany po utworzeniu kanału do usługi. Dostępna jest nazwa konfiguracji punktu końcowego z symbolami wieloznacznymi "*" i wskazuje ApplyConfiguration metodę, która powinna załadować dowolną konfigurację punktu końcowego w pliku, pod warunkiem, że jest dokładnie jedna dostępna i w przeciwnym razie zgłasza wyjątek. Jeśli ten atrybut zostanie pominięty, odpowiedni punkt końcowy jest używany jako domyślny punkt końcowy skojarzony z określonym typem kontraktu. Wartością domyślną atrybutu name jest pusty ciąg, który jest zgodny jak dowolna inna nazwa.

Każdy punkt końcowy musi mieć skojarzony z nim adres, aby zlokalizować i zidentyfikować punkt końcowy. Atrybut address może służyć do określenia adresu URL, który udostępnia lokalizację punktu końcowego. Jednak adres punktu końcowego usługi można również określić w kodzie przez utworzenie identyfikatora URI (Uniform Resource Identifier) i jest dodawany do ServiceHost metody przy użyciu jednej z AddServiceEndpoint metod. Aby uzyskać więcej informacji, zobacz Adresy. Jak wskazuje wprowadzenie, <nagłówki> i< elementy tożsamości> są częścią EndpointAddress elementu i są również omówione w temacie Adresy.

Atrybut binding wskazuje typ powiązania punktu końcowego, który ma być używany podczas nawiązywania połączenia z usługą. Typ musi mieć zarejestrowaną sekcję konfiguracji, jeśli ma zostać odwołana. W poprzednim przykładzie jest to sekcja wsHttpBinding>, która wskazuje, że punkt końcowy używa elementu WSHttpBinding.< Może jednak istnieć więcej niż jedno powiązanie danego typu, którego może używać punkt końcowy. Każdy z nich ma własny <element powiązania> w elemecie typu (powiązanie). Atrybut bindingconfiguration służy do rozróżniania powiązań tego samego typu. Jego wartość jest dopasowywana do name atrybutu< elementu powiązania>. Aby uzyskać więcej informacji na temat konfigurowania powiązania klienta przy użyciu konfiguracji, zobacz How to: Specify a Client Binding in Configuration (Jak określić powiązanie klienta w konfiguracji).

Atrybut behaviorConfiguration służy do określania zachowania punktu końcowegoBehaviors><, którego <> powinien używać punkt końcowy. Jego wartość jest dopasowywana do name atrybutu< elementu zachowania>. Aby zapoznać się z przykładem używania konfiguracji do określania zachowań klientów, zobacz Konfigurowanie zachowań klientów.

Atrybut contract określa, który kontrakt ujawnia punkt końcowy. Ta wartość jest mapowa na ConfigurationName wartość .ServiceContractAttribute Wartość domyślna to pełna nazwa typu klasy, która implementuje usługę.

Konfigurowanie metadanych

Element metadanych> służy do określania <ustawień używanych do rejestrowania rozszerzeń importu metadanych. Aby uzyskać więcej informacji na temat rozszerzania systemu metadanych, zobacz Rozszerzanie systemu metadanych.

Zobacz też