Configuración del cliente

Puede utilizar la configuración de cliente de Windows Communication Foundation (WCF) para especificar la dirección, el enlace, el comportamiento y el contrato (las propiedades "ABC" del punto de conexión de cliente), que los clientes utilizan para conectarse a los puntos de conexión de servicio. El elemento <client> tiene un elemento <endpoint> cuyos atributos se usan para configurar las propiedades ABC del punto de conexión. Estos atributos se describen en la sección Configuración de puntos de conexión.

El elemento <endpoint> también contiene un elemento <metadata> que se usa para especificar la configuración para importar y exportar metadatos, un elemento <headers> que contiene una colección de encabezados de dirección personalizados y un elemento <identity> que permita la autenticación de un punto de conexión por otros puntos de conexión que intercambian mensajes con él. Los elementos <headers> y <identity> son parte de EndpointAddress y se describen en el artículo Direcciones. En la subsección Configuración de metadatos se proporcionan vínculos a temas que explican el uso de extensiones de metadatos.

Configuración de puntos de conexión

La configuración del cliente está diseñada para permitir que el cliente especifique uno o varios puntos de conexión, cada uno con su propio nombre, dirección y contrato, y cada uno haciendo referencia a los elementos <bindings> y <behaviors> de la configuración de cliente que se usará para configurar dicho punto de conexión. El archivo de configuración de cliente debería llamarse "App.config", porque se trata del nombre que espera el entorno de ejecución de WCF. El siguiente ejemplo muestra un archivo de configuración de cliente.

<?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>  

El atributo opcional name identifica de manera única a un punto de conexión de un contrato determinado. Es utilizado por ChannelFactory<TChannel> o ClientBase<TChannel> para especificar qué extremo de la configuración del cliente se destina y se debe cargar cuando se crea un canal para el servicio. Hay disponible un nombre de configuración de punto de conexión de comodín "*" e indica al método ApplyConfiguration que debería cargar cualquier configuración de punto de conexión del archivo, suponiendo que haya precisamente uno disponible o, si no fuese así, produjese una excepción. Si se omite este atributo, el punto de conexión correspondiente se usa como el punto de conexión predeterminado asociado al tipo de contrato especificado. El valor predeterminado para el atributo name es una cadena vacía que se iguala como cualquier otro nombre.

Cada punto de conexión debe tener una dirección asociada a él para ubicar e identificar el punto de conexión. El atributo address se puede utilizar para especificar la dirección URL que proporciona la ubicación del punto de conexión. Pero la dirección de un extremo de servicio también se puede especificar en código mediante la creación de un Identificador uniforme de recursos (URI) y se agrega al ServiceHost utilizando uno de los métodos AddServiceEndpoint. Para más información, consulte Direcciones. Como indica la introducción, los elementos <headers> e <identity> forman parte de EndpointAddress y también se tratan en el tema Direcciones.

El atributo binding indica el tipo de enlace que el punto de conexión espera utilizar al conectarse a un servicio. El tipo debe tener una sección de configuración registrada si se le va a hacer referencia. En el ejemplo anterior, esta es la sección <wsHttpBinding>, que indica que el punto de conexión usa WSHttpBinding. Pero puede que haya más de un enlace de un tipo determinado que el punto de conexión puede utilizar. Cada uno de ellos tiene su propio elemento <binding> dentro del elemento de tipo (enlace). El atributo bindingconfiguration se utiliza para distinguir entre enlaces del mismo tipo. Su valor coincide con el atributo name del elemento <binding>. Para más información sobre cómo configurar un enlace de cliente mediante configuración, consulte Especificación de un enlace de cliente en la configuración.

El atributo behaviorConfiguration se usa para especificar qué elemento <behavior> de <endpointBehaviors> debe usar el punto de conexión. Su valor coincide con el atributo name del elemento <behavior>. Para ver un ejemplo del uso de la configuración para especificar comportamientos del cliente, consulte Configuración de comportamientos del cliente.

El atributo contract especifica qué contrato expone este punto de conexión. Este valor se asigna al ConfigurationName del ServiceContractAttribute. El valor predeterminado es el nombre de tipo completo de la clase que implementa el servicio.

Configuración de metadatos

El elemento <metadata> se usa para especificar la configuración utilizada para registrar las extensiones de importación de metadatos. Para más información sobre la extensión del sistema de metadatos, consulte Extensión del sistema de metadatos.

Consulte también