Compartir vía


Introducción a la arquitectura del SDK del adaptador de LOB de WCF

El SDK del adaptador de LOB de WCF se basa en el modelo de canal WCF y proporciona extensiones en tiempo de diseño y en tiempo de ejecución para que los desarrolladores de adaptadores creen adaptadores a sistemas de línea de negocio que tienen metadatos grandes y dinámicos. Un adaptador creado mediante el SDK del adaptador de LOB de WCF se muestra al consumidor como un enlace WCF personalizado. En la ilustración siguiente se muestran la arquitectura interna y los componentes principales del SDK del adaptador de LOB de WCF.

Imagen que muestra la arquitectura interna y los componentes principales del SDK del adaptador de LOB de WCF.

Controladores

El controlador define los patrones de intercambio de mensajes admitidos por el adaptador.

En la tabla siguiente se resumen los tipos de controlador disponibles, su función y los canales WCF a los que se asignan.

Tipo de controlador Function Se asigna a canales WCF
Microsoft.ServiceModel.Channels.Common.IOutboundHandler Admite el patrón de envío unidireccional o solicitud/respuesta. IOutputChannel,

IRequestChannel
Microsoft.ServiceModel.Channels.Common.IAsyncOutboundHandler Admite el patrón asincrónico de envío o solicitud/respuesta unidireccional. IOutputChannel,

IRequestChannel
Microsoft.ServiceModel.Channels.Common.IInboundHandler Admite patrones de recepción o respuesta unidireccionales. IInputChannel,

IReplyChannel
Microsoft.ServiceModel.Channels.Common.IAsyncInboundHandler Admite variantes asincrónicas de métodos de recepción unidireccional o patrones de respuesta. IInputChannel

IReplyChannel
Microsoft.ServiceModel.Channels.Common.IMetadataBrowseHandler Admite la exploración de metadatos en el sistema de destino. IRequestChannel
Microsoft.ServiceModel.Channels.Common.IMetadataSearchHandler Admite la búsqueda de metadatos en el sistema de destino. IRequestChannel
Microsoft.ServiceModel.Channels.Common.IMetadataResolverHandler Admite la recuperación de metadatos del sistema de destino. IRequestChannel

Implementación del canal

Un adaptador creado mediante el SDK del adaptador de LOB de WCF es básicamente un canal de transporte (System.ServiceModel.Channels.IServiceListner). Un adaptador creado mediante el SDK del adaptador de LOB de WCF se muestra al consumidor como un enlace WCF, donde se usa el enlace para crear la pila del canal. Este enlace se puede considerar un elemento del mismo nivel a otros enlaces WCF predefinidos, como BasicHttpBinding, WsHttpBinding y NetTcpBinding, y se puede establecer a través de app.config o en código por la aplicación cliente al llamar a un servicio. Este enlace contiene un conjunto ordenado de elementos de enlace, siendo el adaptador el elemento de enlace clave que deriva de la clase T:System.ServiceModel.Channels.TransportBindingElement. En un escenario de salida, el entorno de ejecución del SDK del adaptador de LOB de WCF usa un generador de canales para crear el adaptador (es decir, el canal de transporte). En un escenario de entrada, el entorno de ejecución del SDK del adaptador de LOB de WCF usa agentes de escucha de canal para los canales entrantes en una aplicación de servicio. Tanto los mensajes en tiempo de ejecución como los mensajes en tiempo de diseño pasan a través de este componente.

Generador de URI de conexión, conexión y generador de URI de conexión

ConnectionFactory proporciona un patrón de fábrica para crear conexiones basadas en URI y credenciales de usuario. Para obtener más información, vea Microsoft.ServiceModel.Channels.Common.IConnectionFactory.

La conexión define un contrato de comunicación de bajo nivel con el sistema de destino y encapsula las API de comunicación nativas y los identificadores de conexión. Para obtener más información, vea Microsoft.ServiceModel.Channels.Common.IConnection.

Connection Uri Builder permite a los consumidores del adaptador compilar mediante programación los URI de conexión sin conocimientos específicos de la sintaxis. Para obtener más información, vea Microsoft.ServiceModel.Channels.Common.ConnectionUri.

Administración de conexiones

La administración de conexiones es responsable de la administración de la duración de las conexiones de un adaptador. Mantiene internamente un grupo de las conexiones listas para su uso. Este grupo de conexiones está basado en credenciales y URI. La credencial contiene un nombre de usuario y una contraseña que definen el contexto de seguridad en el que se ejecuta la conexión.

Cuando se usan las mismas credenciales y URI, cualquier canal que se abra en el mismo generador de conexiones obtiene la conexión del grupo si ya hay uno disponible.

El administrador del grupo de conexiones mantiene registros de cuántas conexiones abiertas hay a ese URI independientemente de las credenciales y a través de los límites del generador de canales. Por ejemplo, en un sistema, puede tener dos usuarios con credenciales diferentes, lo que significa que hay dos generadores de canales que se conectan al sistema.

Nota

El adaptador puede estar limitado con respecto al número de conexiones que puede admitir, generalmente limitado por los recursos del sistema.

Para ayudar a los desarrolladores de adaptadores a configurar las opciones del grupo de conexiones, el SDK del adaptador de LOB de WCF proporciona dos clases y Microsoft.ServiceModel.Channels.Common.ConnectionPoolSettingsMicrosoft.ServiceModel.Channels.Common.ConnectionManagerSettings.

Administración de metadatos

La administración de metadatos es responsable de la representación orientada a objetos del almacenamiento en caché de los metadatos del sistema de destino. Los metadatos se pueden almacenar en una caché común accesible en todas las credenciales o se pueden almacenar en caché por credencial.

El ciclo de vida de los metadatos comienza con sus definiciones en tiempo de diseño y continúa a través del uso durante el tiempo de ejecución. En tiempo de diseño, los desarrolladores de adaptadores deben identificar el conjunto de operaciones y deben generar el proxy del lado cliente y WSDL necesarios. En tiempo de ejecución, los adaptadores basados en el marco del adaptador usan los metadatos predefinidos para interpretar los mensajes devueltos desde las llamadas del sistema de destino.

Para ayudar a los escritores de adaptadores a configurar la configuración de metadatos, el marco de adaptador proporciona tres clases, Microsoft.ServiceModel.Channels.Common.CacheSettingsy Microsoft.ServiceModel.Channels.Common.MetadataSettingsMicrosoft.ServiceModel.Channels.Common.CommonCacheSettings.

Generador de WSDL

WSDL Builder proporciona una generación automática de WSDL a partir del modelo de objetos de objetos de metadatos internos del SDK del adaptador de LOB de WCF (se puede invalidar para escenarios que requieren generación de WSDL personalizada).

Consulte Microsoft.ServiceModel.Channels.Common.IWsdlRetrieval para obtener más información.

Exploración y búsqueda de metadatos

La búsqueda y exploración de metadatos permite examinar y buscar todos los metadatos de LOB.

Para obtener más información, vea Microsoft.ServiceModel.Channels.IMetadataRetrievalContract.

Generación de metadatos

La generación de metadatos permite generar código para el cliente (para escenarios de salida) y para el servicio (para escenarios de entrada) en función de las operaciones seleccionadas por el consumidor del adaptador. Aunque se recomienda que los consumidores del adaptador usen las herramientas Add Adapter Service Reference Plug-in (Consumir complemento de servicio de adaptador en el caso de las aplicaciones de BizTalk), el SDK del adaptador de LOB de WCF proporciona una interfaz Microsoft.ServiceModel.Channels.MetadataRetrievalClient.GetMetadata%2A pública para recuperar system.Web.Services.Description.ServiceDescription, que representa un lenguaje de descripción del servicio web (WSDL) que contiene información sobre las operaciones y los tipos seleccionados. Los escritores de adaptadores usan el modelo de objetos de metadatos para el SDK del adaptador de LOB de WCF que incluye clases derivadas de Microsoft.ServiceModel.Channels.Common.OperationMetadata y Microsoft.ServiceModel.Channels.Common.TypeMetadata para describir los detalles de cada operación y tipo.