<provider> Elemento (Instancia)

Este tema es específico de una tecnología heredada que se mantiene para la compatibilidad con versiones anteriores con aplicaciones existentes y no se recomienda para nuevo desarrollo. Las aplicaciones distribuidas se deberían desarrollar utilizando  Windows Communication Foundation (WCF).

Contiene el proveedor de un receptor de canal que se ha de insertar en una cadena de receptores de canal.

<configuración>

   <system.runtime.remoting>

      <canales>

         <canal>

            <serverProviders>

               <provider/>

En este caso, los proveedores invalidan a los proveedores de servidor predeterminados de este canal para convertirse en los nuevos proveedores predeterminados de esta plantilla de canal.

<configuración>

   <system.runtime.remoting>

      <canales>

         <canal>

            <clientProviders>

               <provider/>

En este caso, los proveedores invalidan a los proveedores de cliente predeterminados de este canal para convertirse en los nuevos proveedores predeterminados de esta plantilla de canal.

<configuración>

   <system.runtime.remoting>

      <application>

         <channels>

            <channel>

               <serverProviders>

                  <provider/>

En este caso, los proveedores de servidor invalidan a los proveedores predeterminados de esta instancia de canal.

<configuración>

   <system.runtime.remoting>

      <application>

         <channels>

            <channel>

               <clientProviders>

                  <provider/>

En este caso, los proveedores de cliente invalidan a los proveedores predeterminados de esta instancia de canal.

<provider 
    ref="ProviderTemplateReference"
   type="ProviderType, ProviderAssembly"
   customChannelSinkProperty="customProperty"
/>

Atributos opcionales

Atributo Descripción

customChannelSinkProperty

Indica una propiedad de receptor de canal personalizado compatible. Se puede especificar cualquier número de propiedades de proveedor y receptor de canal que admitan los proveedores de receptores de canal personalizados y sus receptores. Una propiedad de receptor de canal personalizado se especifica con un par atributo/valor. En el ejemplo:

<provider id="CustomChannelSinkProvider" type="Namespace.CustomChannelSinkProvider, CustomChannels" customChannelSinkProperty="ChannelSinkPropertyValue"/>

el atributo customChannelSinkProperty y su valor estarán disponibles como un argumento IDictionaryen el constructor del proveedor.

Aquí también se pueden especificar los datos de los proveedores de receptores personalizados. Solo se admite un nivel de nodos. En el ejemplo:

<provider ref="custom">
   <extra data="value"/>
   <extra data="AnotherValue"/>
</provider>

la información adicional estará disponible como ICollection de SinkProviderData en el constructor del proveedor.

Atributos requeridos

Atributo Descripción

tipo

Especifica el nombre de tipo completo del proveedor de receptores de canal así como el nombre del ensamblado que contiene la implementación de proveedores. Esto incluye cualquier información de versión, referencia cultural y clave pública si el ensamblado contenedor está en la caché global de ensamblados. Este atributo solamente se requiere si no se utiliza un atributo ref.

ref

Especifica el id. de la plantilla de proveedor de receptores de canal correspondiente al receptor de canal que el cliente desea registrar para su uso. Si especifica un atributo ref, no es necesario especificar un atributo type.

Notas

Para hacer referencia a otra plantilla de proveedor, proporcione el valor de id de dicha plantilla como valor del atributo ref de esta instancia. Al especificar proveedores, se invalidan todos los proveedores predeterminados; si desea que se invoquen otros proveedores a lo largo de la cadena de llamadas de receptores de canal, deberá especificarlos aquí.

Las instancias del elemento <provider> pueden producirse en cuatro lugares. Cuando se especifica bajo un elemento de plantilla <channel> (bajo el elemento <serverProviders> o <clientProviders>), este elemento especifica un proveedor que será un proveedor de receptores predeterminado de dicho canal en concreto cuando una instancia de la aplicación haga referencia al canal. Cuando se especifica bajo un elemento <application>, invalida todos los receptores predeterminados que se hayan configurado para este canal si se encontrase en una plantilla. Todos los demás proveedores que se desee incluir en la cadena de llamadas deberán especificarse aquí ya que, de este modo, se invalidarán todos los proveedores predeterminados que se hayan especificado en las plantillas.

Ejemplo

En el siguiente archivo de configuración se utiliza un elemento de instancia <provider> para asignar al HttpChannel los proveedores de receptores de canal "propsetter" y "null" que, a su vez, han sido declarados con los elementos de plantilla <provider>. Además, el proveedor de receptores de canal "propsetter" se crea con las propiedades de proveedor personalizado especificadas como atributos en el elemento de instancia del proveedor y como los pares nombre/valor del atributo <endpoint> secundario.

<configuration>
   <system.runtime.remoting>
      <application>
         <client>
            <wellknown 
               type="RemoteType, RemoteAssembly"
               url="http://computername:8080/RemoteType.rem"/>
         </client>
         <channels>
            <channel ref="http">
               <clientProviders>
                  <formatter ref="soap"/>
                  <provider 
                     ref="propsetter" 
                     username="bob" 
                     writeToConsole="true"
                  >
                     <endpoint url="contoso.com:9000" someProperty="xyz" />
                     <endpoint url="contoso.com:9001" someProperty="123" />
                  </provider>
                  <provider ref="null" writeToConsole="true" />
               </clientProviders>
            </channel>
         </channels>
      </application>
      <channelSinkProviders>
         <clientProviders>
            <provider 
               id="propsetter" 
               type="ChannelSinkPropertySetterProvider, SinkAssembly" 
            />
            <provider 
               id="null" 
               type="NullSinkProvider, SinkAssembly" 
            />
         </clientProviders>
      </channelSinkProviders>
      <debug loadTypes="true" />
   </system.runtime.remoting>
</configuration>

Requisitos

Archivos de configuración: Archivo de configuración de la aplicación, archivo de configuración del equipo (Machine.config)

Vea también

Referencia

Esquema de configuración de la comunicación remota

Conceptos

Receptores y cadenas de receptores

Fecha de compilación: 2010-02-13