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.
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.ConnectionPoolSettings
Microsoft.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.CacheSettings
y Microsoft.ServiceModel.Channels.Common.MetadataSettings
Microsoft.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.