1 / 72

WCF y su relación con BizTalk Server 2006 R2

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.

liv
Télécharger la présentation

WCF y su relación con BizTalk Server 2006 R2

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. WCF y su relación con BizTalk Server 2006 R2 Israel Garcia / Pablo Junco App. & Plat. Development Consultants Microsoft Services

  2. Prerequisitos de la sesión • Algunas experiencias básicas asumidas • Windows CommunicationFoundation ;) • BizTalk Server 2004/2006

  3. 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

  4. 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

  5. Windows Communication Foundation (WCF)

  6. Introducción a WCF

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

  8. 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

  9. 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

  10. 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.

  11. 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+, …

  12. Comunicaciones en WCF

  13. 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

  14. 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

  15. 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.

  16. 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

  17. 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

  18. Interfaz de encaminamiento [RouteMatchFilterBehaviorAttribute()] [ServiceContract(SessionMode = SessionMode.Allowed)] interface IWS_Route { [OperationContract(IsOneWay = false, Action = "*", ReplyAction = "*")] MessageProcessMessage(Messagemessage); }

  19. 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); }

  20. Seguridad • Posibilidades estándares (WS-S) • Integrada (Kerberos) • Certificados digitales (X509) • Usuario y Contraseña • Extensión base personalizada • Distribuida e integrada con .NET

  21. 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.

  22. Seguridad (Personalizada) Interfaz de encaminamiento [RouteMatchFilterBehaviorAttribute()] [ServiceContract(SessionMode = SessionMode.Allowed)] interface IWS_Route { [OperationContract(IsOneWay = false, Action = "*", ReplyAction = "*")] MessageProcessMessage(Messagemessage); }

  23. 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); }

  24. 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

  25. 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.

  26. Extensibilidad WCF

  27. 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.

  28. 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.

  29. demo Behaviors y Inspectores

  30. 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

  31. demo CustomAutentication

  32. 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

  33. demo Factoría de Servicios

  34. Configuración

  35. 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.

  36. 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.

  37. demo

  38. Relación de WCF con BizTalk Server 2006 R2

  39. 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

  40. Transporte Esquema Esquema Transporte Ruta Ruta Un sistema Otro sistema Solución conceptual Proceso Fuente Destino

  41. Adaptador SAP WCF WS HTTP IDOC XML Adaptador AS2 Socio B Socio A Ruta Ruta EDI Ruta SAP Un ejemplo Proceso

  42. 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

  43. 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

  44. 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

  45. 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

  46. Conjunto de adaptadores WCF

  47. 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

  48. 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

  49. 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); ... }

  50. 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

More Related