720 likes | 929 Views
WCF y su relación con BizTalk Server 2006 R2. Israel Garcia / Pablo Junco App. & Plat. Development Consultants Microsoft Services. Prerequisitos de la sesión. Algunas experiencias básicas asumidas Windows Communication Foundation ;) BizTalk Server 2004/2006. Agenda.
E N D
WCF y su relación con BizTalk Server 2006 R2 Israel Garcia / Pablo Junco App. & Plat. Development Consultants Microsoft Services
Prerequisitos de la sesión • Algunas experiencias básicas asumidas • Windows CommunicationFoundation ;) • BizTalk Server 2004/2006
Agenda • Windows CommunicationFoundation (WCF) • Introducción a WCF • Interfaces • Contratos • Implementación • Comunicaciones • Canales • Bindings (Caracteristicas) • Transacciones • Seguridad • Extensibilidad • Behaviors • Autorización y Autenticación • Proxies Cliente • Configuración • Demostración
Agenda (cont) • Relación con BizTalk Server 2006 R2 • Conceptos principales • Pues eso, como se relacionan • Adaptadores de transporte de WCF para BizTalk Server • Demostración todo junto
Interfaces • Es el punto de entrada para consumir un servicio. • Desacoplan el uso del servicio de la implementación del mismo. • Facilitan la integración se sistemas. Interfaz Contratos Comunicaciones Seguridad Transacciones Servicios
Contratos • Establecen un lenguaje común. • Los contratos definen una semántica de negocio, abstrayéndonos de la complejidad técnica. • Facilitan la integración. Interfaz Contratos Comunicaciones Seguridad Transacciones Servicios
Implementación • Es el punto donde procesamos técnicamente el negocio descrito por el servicio. • Un servicio puede ser un punto y final o un punto y seguido en una cadena de elementos que colaboran en un sistema. Interfaz Contratos Comunicaciones Seguridad Transacciones Servicios
WCF: Soluciones completas • WCF nos provee de todos los elementos para construir una solución. • WCF facilita la construcción de servicios separando Interfaz, Implementación y Contratos. • WCF también nos facilita independizar la implementación del uso de Aspectos como la Seguridad, Transacciones, Comunicaciones, etc. • WCF es un Framework Extensible.
WCF: Soluciones completas • Negocio • Interfaces y Contratos • Políticas de Servicio, Namespaces, … • Implementación • Aspectos: Transacciones, Seguridad, … • Extensibilidad mediante Behaviors e Inspectors • Comunicaciones • Protocolos: TCP, HTTP, … • Seguridad, Garantía de Entrega, Routing, … • Hosting • IIS, WAS, Windows Service, COM+, …
WCF CommunicationRuntime Capa de Servicio Cliente Servicio • Cliente • Los proxies cumplen la interfaz de servicio y nos independizan del uso de la tecnología. • Los proxies son generados fácilmente en Visual Studio 2008/2005 (con Extensiones) • Podemos intervenir en el proceso de envío y en tratamiento del mensaje. • Podemos aplicar características de enrutado, seguridad, factorías de canales,… Método Método Métodos Métodos Objetos Objetos Proxy Dispatcher Capa de Mensajería Mensaje Mensaje protocolo protocolo protocolo protocolo Cadena de datos en bytes codificación codificación 0101101 transporte transporte Pila del canal Pila del canal
WCF CommunicationRuntime Capa de Servicio Cliente Servicio • Servicio • El servicio solo se compone de la implementación de la interfaz. El “listener” nos abstrae de la comunicación, seguridad, … • Podemos ampliar el sistema con nuestros propios protocolos. • Podemos intervenir en el proceso de recepción y en tratamiento del mensaje. Método Método Métodos Métodos Objetos Objetos Proxy Dispatcher Capa de Mensajería Mensaje Mensaje protocolo protocolo protocolo protocolo Cadena de datos en bytes codificación codificación 0101101 transporte transporte Pila del canal Pila del canal
WCF CommunicationRuntime • Windows CommunicationFoundation se basa en 3 principios: el ABC. • Address: El servicio se expone mediante un direccionamiento de solicitudes. • Contract: El contrato del servicio se compone de Interfaz y Contrato de datos. • Binding: Protocolo que utilizamos para conectarnos. • Windows CommunicationFoundation hace uso del ABC para exponer adecuadamente nuestro servicio para cada tipo de protocolo. El sistema se encarga de manera transparente de resolver: • El acceso de los clientes a través de la resolución de la cadena de llamadas (ABC -> ABC). A su vez el servicio expuesto resuelve la petición contra nuestra implementación de manera transparente. • Exponer el contrato en el formato adecuado para exponerlo hacia terceros (WSDL en servicios Web) y que se puedan consumir sin conocer detalles de la implementación.
Enlaces (bindings) WCF Notas: X = No soportado, WS-A = WS-Addressing, WS-AT = WS-AtomicTransactions, OleTx = OleTransactions * Flujo de transacciones esta deshabilitado por defecto, pero cuando se habilita, hay unos protocolos por defecto
Routing (Encaminamiento) • Encaminar para integrar y reutilizar • Solo es requerido un punto de entrada • Simplifica la extensión de arquitecturas SOA • Patrones de aplicación • Canal (Bus) de Mensajería • Fachada • Dos niveles de seguridad • Consumición de servicios: Identidad del llamante • Entrega de mensajes: Identidad del sistema • La entrega no esta garantizada
Interfaz de encaminamiento [RouteMatchFilterBehaviorAttribute()] [ServiceContract(SessionMode = SessionMode.Allowed)] interface IWS_Route { [OperationContract(IsOneWay = false, Action = "*", ReplyAction = "*")] MessageProcessMessage(Messagemessage); }
Servicio de encaminamiento publicMessageProcessMessage (Messagemessage) { Uri Via = new Uri(“http://services_host/service1”); EndpointAddressLogicalEndpointAddress = new EndpointAddress("urn:mstx-routing"); WSHttpBindingbinding = new WSHttpBinding(); ChannelFactory<IWS_Route> wsRouter = new ChannelFactory<IWS_Route>(binding); IWS_Routeroute = wsRouter.CreateChannel(LogicalEndpointAddress, Via); returnroute.ProcessMessage (message); }
Seguridad • Posibilidades estándares (WS-S) • Integrada (Kerberos) • Certificados digitales (X509) • Usuario y Contraseña • Extensión base personalizada • Distribuida e integrada con .NET
Seguridad WCF nos provee cuatro alternativas de seguridad: Sin Seguridad, Seguridad de Canal de Comunicaciones, Seguridad de Mensaje, Seguridad de Canal y Mensajes. Los niveles de seguridad dependen del canal utilizado. En todos los casos disponemos de la posibilidad de establecer el tipo de credenciales para identificar el llamante: Kerberos, Certificados X509, UserNameAndPassword y por supuesto Custom. Podemos extender el modelo de Autenticación y Autorización, permitiendonos manejar nuestro propio modelo de credenciales, basar el modelo de Autorización en Base de Datos o AuthorizationManager.
Seguridad (Personalizada) Interfaz de encaminamiento [RouteMatchFilterBehaviorAttribute()] [ServiceContract(SessionMode = SessionMode.Allowed)] interface IWS_Route { [OperationContract(IsOneWay = false, Action = "*", ReplyAction = "*")] MessageProcessMessage(Messagemessage); }
Seguridad (Personalizada) Servicio de encaminamiento publicMessageProcessMessage (Messagemessage) { Uri Via = new Uri(“http://services_host/service1”); EndpointAddressLogicalEndpointAddress = new EndpointAddress("urn:mstx-routing"); WSHttpBindingbinding = new WSHttpBinding(); ChannelFactory<IWS_Route> wsRouter = new ChannelFactory<IWS_Route>(binding); IWS_Routeroute = wsRouter.CreateChannel(LogicalEndpointAddress, Via); returnroute.ProcessMessage (message); }
Transacciones • En el lado del servidor • Control de la vida de la transacción • La sesión es requerida • Independiente del llamante • En el lado del cliente (WS-AT) • Control de la vida de la transacción • Integrado con • DTC y TransactionServices • Coordinadores • Transacciones compatibles con WS-AT
Transacciones WCF nos provee de dos modelos de Transacciones: Transacciones Propagadas desde Cliente y Transacciones en Servidor. En caso de las Transacciones Propagadas en Cliente, están asociadas a los canales de uso. Esto permite adaptar el mecanismo de propagación de transacciones a cada tipo de canal (ejemplo: WS-AT sobre SOAP 1.2/HTTP). Este modelo se integra con los Transaction Monitor existentes en otras tecnologías. En la plataforma Microsoft el responsable de esta tarea es el DTC (DistributedTransactionCoordinator) En el caso de las Transacciones en Servidor, son independientes del Canal utilizado. Su ciclo de vida depende de las llamadas realizadas al Servicio. En ambos casos, el modelo de Transacciones se integra con el modelo expuesto por System.TransactionServices.
Extensibilidad (Behaviors) [RouteMatchFilterBehaviorAttribute()] [ServiceContract(SessionMode = SessionMode.Allowed)] interface IWS_Route { [OperationContract(IsOneWay = false, Action = "*", ReplyAction = "*") MessageProcessMessage(Messagemessage); } Los Behavior son extensiones de WCF a nivel de Cliente y de Servidor, que permiten modificar el comportamiento de la runtime en el cliente y servidor. Los Behavior son clases que cumplen una interfaz y que pueden ser aplicadas desde código, haciendo uso de un atributo y a través de la configuración.
Extensibilidad (Inspectores) • Los Inspectores permiten interactuar con el Mensaje tanto en cliente como en servidor. • Los Inspectores se integran permitiendonos participar en: • La fase anterior al envío y posterior a la recepción del Mensaje del cliente. • La fase posterior a la recepción (antes de su procesado) y la fase anterior a la respuesta en el servicio. • Los Inspectores se pueden aplicar mediante Behaviors en los servicios.
demo Behaviors y Inspectores
Extensibilidad (Autenticación/Autorización) • Haciendo uso de las interfaces de Windows CommunicationFoundation podemos modificar el comportamiento en cuanto a Autenticación y Autorización en los servicios. • La Autenticación puede ser adaptada y/o modificada para adecuarla a nuestras necesidades. • La Autorización puede ser adaptada para trabajar con otros productos y/o soluciones como AuthorizationManager fácilmente. • Estos comportamientos se aplican en cliente y servidor con el fin de conseguir una solución EndToEnd
demo CustomAutentication
Extensibilidad (Proxies) • La infraestructura de Proxy de WCF funciona en modo factoría, de modo que crear un proxy es en sí, crear un canal. • Los canales cumplen la interfaz de servicio para ocultar complejidad. La factoría de canales puede crear canales directos y canales de enrutado. • Gracias a este sistema podemos hacer uso de los servicios sin disponer del código del mismo. Visual Studio genera los contratos, la definición de interfaz y el proxy para que todo funcione. • Los proxy en Runtime interceptan las llamadas para poder aplicar las distintas extensiones que hemos aplicado. Esto es posible gracias a las capacidades Nativas de .NET
demo Factoría de Servicios
Configuración Las secciones de configuracion nos permiten definir los mismos elementos que desde código. <?xmlversion="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <servicename="Microsoft.ServiceModel.Samples.CalculatorService"> <!-- Thisendpointisexposed at the base addressprovidedby host: http://localhost/servicemodelsamples/service.svc --> <endpointaddress="" binding="wsHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" /> <!-- Themexendpointisexplosed at http://localhost/servicemodelsamples/service.svc/mex --> <endpointaddress="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> </service> </services> </system.serviceModel> </configuration> Este es un ejemplo de una definición de servicio. Esta configuración la recibe un ServiceHost por código.
Configuración <system.serviceModel>, esta sección contiene a toda la configuración referente a Windows CommunicationFoundation. <behaviors>, esta sección define todos los behaviors y endpointbehaviors que se quieren aplicar a un servicio. <bindings>, esta sección define todos los bindings aplicables a un servicio. Los bindings se aplican en modo Stack. <client>, esta sección define la configuración de los servicios a los que un cliente se puede conectar. <comContracts>, esta sección define que COM+ puede exponer WCF y bajo que configuración. <diagnostics>, esta sección permite habilitar los sistemas de instrumentación de WCF como WMI, contadores, trazas, etc. <extensions>, nos permite definir extensiones como Behaviors, nuevos modelos de Binding, etc para ser utilizados en nuestros servicios. <serviceHostingEnvironment> , nos permite configurar caracteristicas del entorno de hosting de los servicios como la compatibilidad ASPNet, memoria para activar el servicio, etc.
Clientes Operadores Logísticos Entidades Bancarias Sistema RRHH Proveedores Otros Sistemas CRM ERP Proceso Centralizado Servicios Servicios SQL Server Proceso EDI / VAN Oracle HTTP SAP XML / SOAP MSMQ SWIFT / VAN
Transporte Esquema Esquema Transporte Ruta Ruta Un sistema Otro sistema Solución conceptual Proceso Fuente Destino
Adaptador SAP WCF WS HTTP IDOC XML Adaptador AS2 Socio B Socio A Ruta Ruta EDI Ruta SAP Un ejemplo Proceso
Arquitectura de BizTalk Server Gestión Motor Principal Mensaje Mapas Orquestaciones Contexto Configuración Gestión de Instancias y Activación Mecanismo de Suscripción/Publicación - Correlación Contenido Principal Administración MessageBox Contenido Otras Partes Despliegue Procesamiento de Mensajes Desamblador (Planos, XML)) Resolución de socios Codificación MIME / SMIME EDI Monitorización Ensamblador (Planos, XML) A Medida Validador (XML) AS2 Reglas Negocio Vocabularios Integración con Socios Adaptadores de Recepción y Envío Políticas De Terceros POP3 MSMQ HTTP Productos (SQL, SAP, MOSS, …) FTP Hechos Informes Reglas SMTP WCF SOAP A Medida FILE Acciones
WCF en BizTalk Server • Expone a BizTalk Server como servicio WCF o como un consumidor (cliente) de servicios construidos en WCF • Proporciona nuevos escenarios • Transaciones sobre servicios Web • Seguridad • Codificación MTOM • Construcción sobre nueva pila de servicios Web
Interoperabilidad • WCF-BasicHttp • SOAP 1.1 Messaging • MTOM • WSS SOAP Message Security 1.0 • WS Metadata Exchange • WCF-WsHttp • SOAP 1.2 Messaging • WS-Addressing 2005/08 • WSS SOAP Message Security 1.0/1.1 • WS Secure Conversation / WS Trust • WS Atomic Transactions / WS Coordination • WS Metadata Exchange
Presentación adaptadores de WCF • Completan el puente entre BizTalk Server y .NET 3.0 • Uso similar a cualquier otro adaptador • Creación de puertos de salida y localizaciones de entrada • Seleccionar el adaptador WCF como transporte • Configurar el adaptador para ajustar WCF • Configuración almacenada en SSO
Arquitectura del adaptador WCF • Áreas claves a entender • Contratos genéricos del adaptador WCF • Arquitectura de envío (Consumo) • Arquitectura de recepción (Publicación) • Exposición de metadatos de servicio • Opciones de seguridad y transacciones • Configuraciones del adaptador Custom • Integración con orquestaciones
Contratos de servicios genéricos • Los adaptadores de WCF utilizan contratos genéricos • IOneWayAsync • ITwoWayAsync • ITwoWayAsyncVoid • etc. • Permite a los puertos procesar cualquier tipo de mensaje • Operaciones tipadas utilizando: Message, Action=“*” • Las operaciones son siempre de doble sentido • Excepto cuando se utilice NetMsmqBinding
ITwoWayAsyncVoid(Ejemplo) // used to model one-way ports that don’t use NetMsmqBinding (ACKs) [ServiceContract( Namespace="http://www.microsoft.com/biztalk/2006/r2/wcf-adapter")] public interface ITwoWayAsyncVoid { // Methods [OperationContract(AsyncPattern=true, IsOneWay=false, Action="*", ReplyAction="*")] IAsyncResultBeginTwoWayMethod( Message message, AsyncCallback callback, object state); void EndTwoWayMethod(IAsyncResult result); ... }
Arquitectura de envío • Envía mensajes utilizando el canal de WCF • El canal es dinámicamente creado por el adaptador • Un contrato genérico es utilizado • Hay que especificar la acción • Solo es compatible con operaciones de doble sentido (two-way) • A no ser que se utilice NetMsmqBinding