Sistemas Conectados con Windows Communication Foundation (Nombre Beta – Indigo) César de la Torre Arquitecto de Software [Microsoft MVP – Connected Systems] ctorre@renacimiento.com Renacimiento Una compañía Objetivos ¿Qué cosas tienen que quedarme claras después de esta sesión? Una buena idea de lo que significa la ‘Orientación a Servicios’ / SOA. Interoperabilidad y especificaciones WS-* Nueva tecnología Microsoft para sistemas conectados: Visión global de todas las posibilidades que ofrece WCF(Indigo) Agenda Evolución sistemas conectados Microsoft Introducción a SOA (Orientación a Servicios) ¿Suficientes los Web-Services básicos? Introducción a especificaciones WS-* Introducción a WCF(Indigo) Arquitectura de WCF Desacoplamiento e Independencia de WCF: Protocolos con WCF (http, TCP, etc.) Hosting Formato/Serialización Agenda Seguridad con WCF Seguridad basada en los mensajes Autenticación Cifrado Transacciones distribuidas ‘multi-servicio’ con WCF Extensibilidad ‘custom’ con WCF Behaviors Channels Evolución sistemas Conectados Microsoft Historia de ‘Sistemas Conectados’ con tecnología Microsoft WCF(Indigo) System.Messaging WSE WS (ASMX) Enterprise Services COM+ COM DCOM Sockets Remoting 2006 2005 (.NET 2.0) RDS 2003 2001 RPC 1998 (.NET 3.0) (.NET 1.1) (.NET 1.0) 1997 DDE 1994 1992 Tiempo Tecnología .NET Arquitecturas distribuidas Ahora Los usuarios no quieren cerrarse a una plataforma Es necesaria una arquitectura independiente… De la plataforma Del lenguaje De los objetos De los mecanismos de llamada Bienvenido a SOA, WS, WCF… Orientación a Servicios Orientación a Servicios (SOA) Service-Oriented Architecture (SOA) La Integración es difícil Sistemas heterogéneos Múltiples soluciones CRM Se necesita un planteamiento estándar Arquitectura orientada a servicios Basada en un “bus de mensajería” Estándares WS-* Finanzas RRHH Ventas Servicios SOA Servicio A Servicio B A B Servicio C C Procesos complejos que intercambian datos Funcionalidad de negocio Interfaces basada en mensajes Cambio a SOA Desde Hacia Orientado a Funciones Construido ‘para que dure’ Ciclos de Desarrollo prolongados Fuertemente acoplados Orientación a Objetos Implementación Servidor conocida Orientado a Coordinación Construido ‘para que cambie’ Construcción y despliegue incremental Debilmente acoplados Orientación a mensajes (externamente) Abstracción (Servicios Caja-Negra) Los 4 principios de SOA (‘The 4 Tenets of SOA’) Las fronteras de los Servicios deben ser explícitas Los Servicios deben ser Autónomos Los Servicios deben compartir … en lugar de ‘ Servicios Web ’ Esquemas y Contratos, no Clases y Tipos La Compatibilidad se basa en Políticas Servicios ¿Necesitamos más que Servicios-Web básicos? ¿Son suficientes los WS Básicos? Los WS básicos (XSD, SOAP, WSDL, UDDI) consiguen una comunicación básica Proporcionan intercambio básico de mensajes XML Interconexión de sistemas heterogéneos La compartición de esquemas permite mayores abstracciones PERO, la mayoría de las aplicaciones distribuidas necesitan MAS… Temas Pendientes Abiertos Los Sevicios-Web tienen muchas necesidades comunes Modelo de seguridad ‘orientado a mensajes’ Mensajería estable y confiable Soporte de Transacciones (entre WS) Mecanismos de Direccionamiento y Ruteo Metadatos para ‘Políticas’ de WS Soporte para datos binarios Especificaciones WS-* WS-* SI QUEREMOS ‘INTEROPERABILIDAD’ con otras plataformas Son las ESPECIFICACIONES ESTANDARD que están siendo definidas por múltiples fabricantes - Microsoft, IBM, HP, Fujitsu, BEA, VeriSign, SUN, Oracle, CA, Nokia, CommerceOne, Documentum, TIBCO, etc. Especificaciones disponibles en: http://www.oasis-open.org WS-* : Pila de Protocolos Seguridad Gestión Confiabilidad Procesos de Negocio Transacciones … Metadatos Aplicaciones Conectadas Mensajería Aplicaciones e Inraestructura de Aplicaciones Plataforma Base XML HTTP TCP SMTP … Transportes Implementaciones de WS-* Otros Fabricantes (IBM, BEA, etc.) Microsoft WSE (1.0, 2.0, 3.0) (Web Services Enhancements) WCF (Indigo) (Windows Communications Foundation) Evolución de la implementación de WS-* WS-Basic WSE 2.0 WSE 3.0 WCF Devices Devices Profile Profile Infraestructura Y Perfiles Metadatos WS-Secure WS-Secure Conversation Conversation WS-Business Activity Aseguramientos WS-Metadata Exchange WS-Trust WS-Trust WS-Atomic WS-Atomic Transaction Transaction UDDI WS-Coordination WS-Coordination WS-Policy WS-Management WS-Federation WS-Management WS-Federation (FW 2.0) WS-Security WS-Security WS-Reliable WS-Reliable Messaging Messaging Mensajería SOAP SOAP 1.2 1.1 WS-Addressing WS-Addressing MTOM MTOM XML 1.0 XML Schema MSMQ / TCP XML Infoset XML Namespaces MIME WSDL 1.1 SOAP / HTTP Fundación Windows Communication Foundation Introducción a WCF Nueva Generación Tecnologías Base de Windows Windows Presentation Windows Communication Foundation Foundation Revolución Interfaz Gráfico Aplic. Basado en Vectores Independiente de resolución Interfaces 3D Servicios seguros Aplic. Distribuidas Transaccionales y Confiables Interoperabilidad con protocolos WS-* Cualquier Transporte Cualquier Host Windows Workflow Foundation Motor base para Workflows Workflows ‘programa’ y ‘humano’ Aplicaciones Compuestas PRESENTATION Presentation Framework System.Windows (3.0) DATA ASP.NET ADO.NET System.Web (2.0) Compilation Configuration Handlers Hosting Mail Management Security UI (2.0) Util System.Data Common Odbc OleDb OracleClient Sql SqlClient Annotations Automation Controls Data Documents Ink Interop Navigation Resources Serialization Shapes Printing Subsystem Threading System.Printing (3.0) System.Windows.Media (3.0) GDI+ 3D System.Drawing Animation Design Imagine Drawing2D Windows Forms Printing System.Windows.Forms (2.0) Design Layout VisualStyles COMMUNICATION Language Integrated Query System.Query (F) System.Data.DLinq (F) System.Xml.XLinq (F) System.Expressions (F) Windows File System System.Storage (F) Windows Communications Foundation System.ServiceModel (3.0) Channels Configuration Diagnostics Integration System.ServiceModel.Security(3.0) Core ASP.NET Data Management Audio Calendar System.Web Contacts Caching Documents Profile Image SessionState Media Messages XML Data Rules System.Xml Sync Schema Video Serialization XPath XPS Documents Xsl System.Windows.Xps (3.0) System.IO.Packaging (3.0) Protocols Tokens Windows Workflow Foundation System.Workflow (3.0) System.Workflow.Activities (3.0) Rules System.Workflow.ComponentModel (3.0) Complier Desinger Serializaztion System.Workflow.Runtime (3.0) Hosting Messaging Network Class Library System.Net Cache Mail (2.0) Network Information (2.0) Security (2.0) Sockets ASMX Web Services System.Web.Services Identity Management Microsoft.InfoCards (3.0) MSMQ .NET Remoting System.Messaging System.Runtime.Remoting Directory Services .NET Remoting System.DirectoryServices System.Runtime.Remoting Speech Integration System.Speech (3.0) Recognition Synthesis FUNDAMENTALS BASE CLASS LIBRARIES System System.Text System.CodeDom System.ServiceProcess System.Resrouces System.Text AccessControl Managed Add-In Framework (2.0) System.Addins (F) Cryptography (2.0) Contact Permissions Microsoft.Build (2.0) System.Configuration Policy Principal (2.0) System.EnterpriseServices System.Transactions (2.0) System.ComponentModel System.Threading System.Timers System.Diagonostics System.IO (2.0) System.Text Generic (2.0) System.Reflection Email System.Runtime CompilerServices ConstrainedExecution(2.0) InteropServices Hosting Serialization Versioning Claves (2.0) (3.0) - New “ClickOnce” Deployment System.Deployoment (2.0) (2.0) - Substantially Improved - Windows Presentation Foundation (formerly codenamed “Avalon”) - Windows Communication Foundation (formerly codenamed “Indigo”) WINDOWS VISTA - Windows Workflow Foundation ¿Qué es WCF? (Indigo) “El modelo unificado de programación para aplicaciones distribuidas/SOA sobre plataforma Windows” Unificación Desarrollo SOA Interoperabilidad Unifica las tecnologías distribuidas de Microsoft Funcionalidad Desacoplada/Componentizada Para maquina-local, intranet, e Internet Desarrollo Orientado a Servicios Soporta los ‘4 tenets’ de SOA Interoperabilidad con WS-* para otras plataformas (Java, etc.) Interoperabilidad con tecnologías actuales de Microsoft Y también… Para implementar aplicaciones distribuidas ‘No interoperables’. No todas las Apps tienen por qué ser interoperables con otras plataformas (Java, etc.). Hay muchas Aplicaciones distribuidas que se requiere simplemente máximo rendimiento y posibilidades. Serán Apps. Compat. exclusivamente .NET TCP, binario, etc. Unión de los stacks actuales Programación Orientada a Protocolos WS-* Mensajes Extensibilidad Programación Programación Orientada a basada en Servicios atributos Unificación de tecnologías WS ASMX .NET Remoting (1.0, 2.0) Servicios Básicos Interoperables Comunicación .NET – .NET Transactciones Distribuidas, etc. Especificaciones WS-* Colas de Mensajes Enterprise Services (COM+) WSE MSMQ (1.0, 2.0, 3.0) X WCF (Indigo) X X X X X X X X X WCF - Características Desacoplamiento del Servicio, su Comportamiento, los parámetros de la Comunicación y el Alojamiento Características principales ‘Seguro por defecto’ El binding por defecto es seguro Transaccional y confiable Transportes: HTTP, TCP, Named-Pipes & MSMQ WCF - Características Seguridad End To End Mensajería SOAP confiable End To End Confidencialidad, Integridad, Autenticación, Autorización X509, User/Pwd, Kerberos, SAML, CardSpace(InfoCard) Orden y entrega Interoperabilidad WS, WSE, Remoting, .NET Messaging, COM+ 1.0 Visión de ejecución de un Servicio WCF Y su consumo por un Cliente Arquitectura de WCF Arquitectura Servicio Comportamiento del Servicio Parámetros de la Comunicación Alojamiento Aplicación Service Model Layer Messaging Layer Hosting Environment Service & Data Contracts Behaviors (atributos) Bindings (configuración) Hosting Environments Arquitectura Configurable Aplicación Service & Data Contracts Service Model … Error Behavior Metadata Behavior Instance Behavior Throttling Behavior Transaction Behavior Type Integ. Behavior Concurrency Behaviors (atributos) Messaging Bindings (config) … Hosting Environments Secure Channel … WAS HTTP Channel ASP.NET Avalon Behavior Text/XML Encoder Reliable Channel TCP Channel WinForm Queue Channel NT Service Binary Encoder COM+ Definición de un Servicio Service Contract Define el contrato del servicio expuesto Interfaces .NET con Atributo [ServiceContract] Métodos del interfaz marcados con [OperationContract] Ejemplo: Service Contract [ServiceContract] [XmlSerializerFormat] public interface IContratoBrokerBolsa { [OperationContract(IsOneWay=true)] string ComprarAcciones(string valor, int cantidad); } Definición de Contrato y Servicio [ServiceContract] public interface IContratoSaludo { [OperationContract] string Saludar(string nombre); } public class ServicioSaludo : IContratoSaludo { public string Saludar(string nombre) { return “Hola, ” + nombre; } } Data Contracts Definen tipos de datos intercambiados Entidades con atributo DataContract Miembros con atributo DataMember Namespaces y nombres Versionado Contratos en WCF Clase OOP public class Pedido { public int iDPedido; public int codProducto; public int precio; public string info; public void Procesar(); public ObtenerInfo(); } Data Contract [DataContract] public class Pedido { [DataMember] public int iDPedido; [DataMember] public int codProducto; [DataMember] public int precio; [DataMember] public string info; } [DataContract] public class Consulta { [DataMember] public int iDPedido; } [DataContract] public class Info { [DataMember] public string info; } Service Contract [ServiceContract] public interface IServicioPedido { [OperationContract] void Procesar(Pedido p); [OperationContract] Info ObtenerInfo(Consuta c); } 1.1 Definición de CONTRATO de Servicio de un Servicio-WCF Implementación del Servicio La implementación es simplemente una librería de clases (.DLL) con clases estándar que implementan el interfaz del contrato. Se pueden ‘marcar’ con atributos de ‘Behaviors’. [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] public class ServicioSaludo : IContratoSaludo { public string Saludar(string nombre) { return “Hola, ” + nombre; } } 1.2 Implementación de Clase del Servicio WCF Exponiendo un Servicio - (Hosting y EndPoints) Tipos de Alojamiento (Hosting) Auto-Alojamiento App.Consola Servicio Windows Alojamiento WAS (Windows Activation Service) Solo en Windows Vista / Longhorn Server IIS IIS (XP, Win2003) IIS 7.0 (WinVista, Longhorn) Utiliza WAS ‘por debajo’ Alojamiento del Servicio Auto-Alojamiento (App.Consola / Servicio Windows) class HostSaludo { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(ServicioSaludo)); host.Open(); // En espera Console.ReadLine(); host.Close(); } } Alojamiento WAS/IIS http://localhost/ServicioSaludo/ServicioSaludo.svc <%@ Service Language=“C#” Class=“ServicioSaludo” %> Clientes y Servicios Cliente Servicio Mensaje Endpoints Cliente Servicio Endpoint Mensaje Endpoint Endpoint Endpoint ABC: Address, Binding, Contract Cliente Servicio Mensaje C B A A B C A B C A B C Address Binding Contract ¿Donde? ¿Como? ¿Qué? Endpoint Creación de Endpoints Cliente Servicio Mensaje C B A Channel Cliente A B C A B C A B C Host Endpoints Punto que expone el servicio ABC de un End-Point. Se define por Address(Dirección): URI o Network Address Binding: Define Protocolo: TCP, HTTP, Named-Pipes, MSMQ Codificación: Texto o Binario Seguridad: SSL, SOAP security, … Referencia al servicio a exponer Contract: Interfaz ‘Contrato del Servicio’ Binding Define los parámetros de la comunicación Definidos en .config del proceso HOST (propio, IIS, etc.) Transporte (TCP, HTTP, Named-Pipes, MSMQ) Protocolo de Flujo (one-way, request-reply, duplex…) Confiabilidad (Sesión, transacciones,…) Protocolos de Seguridad (Autenticación, autorización, cifrado, firma, …) Codificación (Texto o Binario) Configuracion del ‘Servicio’ <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.serviceModel> <services> <service type=“ServicioSaludo" <endpoint address=“http://localhost/ServicioSaludo" binding=“basicHttpBinding" contract="IContratoSaludo" /> </service> </services> </system.serviceModel> </configuration> 1.3 Hosting de Servicio-WCF en aplicación de Consola (Definición de Bindings, etc.) Consumiendo un Servicio Implementando el Cliente Generar el proxy Utilidad svcutil.exe Con ‘Add Service Reference’ de VS.Orcas Definir el endpoint (bindings) Fichero de configuración EndPoints Cliente <system.serviceModel> <client> <endpoint Name=“EndpointSaludo_basicHttpBinding" address="http://localhost/ServicioSaludo" binding="basicHttpBinding" contract="IContratoSaludo" /> </client> </system.serviceModel> 1.4 Consumo de Servicio-WCF desde aplicación Cliente Implementando otros tipos de Hosting Entornos de Alojamiento (Hosting) Tipo IIS 5.0 IIS 6.0 Escenario Beneficios Limitaciones Integrado en el Integración con IIS y Solo HTTP contexto ASP.NET ASP.NET Aplicacion -a.- Consola para -Facilidad de debugging No Monitoriz. pruebas y debug y control del host automática del Consola ó -b.- App.Win para - Todos los protocolos Servicio App.Win aplicaciones P2P. Windows Service Servicio aislado necesita IIS - Todos los protocolos No Monitoriz. automática del Servicio Solo Windows Vista / Longhorn Server Solo Windows Vista / Longhorn Server -No Windows Activation Service Servicio aislado - Monitorizado - Todos los protocolos IIS 7.0 Integrado en el contexto ASP.NET Como WAS pero se integra con ASP.NET 2.0 Hosting de Servicio-WCF en Servicio-Windows (Servicio NT) 3.0 Hosting de Servicio-WCF en Servidor Web VS.2005 (Cassini) ó en IIS (5.5, 6.0 ó 7.0) 4.0 Hosting de Servicio-WCF NetTCP en WAS (Windows Activation Service de Windows Vista / Longhorn Server) Más detalles sobre Bindings Características de Bindings Encoding Selección de Transporte TCP, HTTP, Named Pipes, MSMQ, Custom (SMTP,etc.) Seguridad Extremo-a-Extremo Text, Binary, Custom Confidencialidad, integridad, authN, authZ, federación Credenciales: X.509, User/Pwd, Kerberos, SAML, CardSpace(InfoCard), Custom Mensajería Confiable Extremo-a-Extremo Confiabilidad, orden de mensajes, etc. Colas persistentes y volátiles MSMQ, para disponibilidad Bindings Binding HTTP Transport Text Security RM TX Protocol Encoders TCP HTTP Text Security RM MSMQ IPC Binary TX .NET Custom Custom Custom Integración con Bindings WCF * Binding Binding Http/WS Binding Http/WS Binding WS-* Protocols MSMQ Protocol MSMQ Binding MSMQ Protocol WCF WCF ASMX/WSE3 Binding MSMQ WCF WS-* Protocols WS-* Protocols Http/WS Java WCF * Binding WS-* Protocols Http/WS ASMX/WSE3 WCF WS-* Protocols WCF Java MSMQ Binding WCF MSMQ Serialization != Encoding Serialización (Impacta en implementación): Encoding (Transparente en implementación): “Paso de objetos .NET a un XML-Infoset” “Como se manda el XML InfoSet por la red” XML, Binario, MTOM. Tres tipos de Serialización: Cada uno con diferente esquema XML y algoritmos 1.- DataContractSerializer (usado por defecto). Atributo [DataContractFormat] si puesto explícitamente 2.- NetContractSerializer (Bajo nivel, poco utilizado) 3.- XmlSerializer Compatible con WS-ASMX (Basic Profile) Atributo [XmlSerializerFormat] en Service-Contract Bindings, Encoding y Transportes Nombre Transporte Encoding Interoperabilidad BasicHttpBinding HTTP/HTTPS Texto + NetTcpBinding TCP Binario - NetPeerTcpBinding P2P Binario - NetNamedPipeBinding Named Pipes Binario - WSHttpBinding HTTP/HTTPS Texto,MTOM + WSFederationBinding HTTP/HTTPS Texto,MTOM + WSDualHttpBinding HTTP Texto,MTOM + NetMsmqBinding MSMQ Binario - MsmqIntegrationBinding MSMQ Binario + 5.0 Uso de TCP y Named-Pipes como transporte y Encoding de mensajes en BINARIO. Seguridad en WCF Necesidades Seguridad Servicios intra ó inter organizacionales Necesitamos: Autenticación, confidencialidad, integridad de mensajes, privacidad y confianza. Federación de seguridad entre organizaciones Seguridad en Servicios Securizar los mensajes Soportar varias tecnologías criptográficas Conversaciones Seguras Securizar un intercambio contínuo de mensajes Confianza Extender relaciones de confianza a lo largo de servicios distribuidos Comunicación Segura Seguridad a nivel de Protocolo Seguridad SSL Seguridad SSL Cifra toda la comunicación El ‘Emisor’ tiene que confiar en todos los intermediarios Restringe los protocolos que pueden usarse, p.e. solo SSL (HTTPS) Comunicación Segura WS-Security: Seguridad a nivel de Mensaje Seguridad extremo a extremo del mensaje independiente del ‘Transporte’ El emisor solamente necesita confiar en el punto final Soporta múltiples protocolos y múltiples tecnologías de seguridad Se encripta solamente parte del mensaje La firma se guarda con los datos del mensaje Resumen Características Bindings X X X X X X X X Streaming X X X X X Duplex T T|S T|S T|S T|S T|S T|S Transacciones Seguridad BP 1.1 WS WS .NET .NET .NET .NET Sesion Interoperabilidad BasicHttpBinding WsHttpBinding WsDualHttpBinding NetTcpBinding NetNamedPipesBinding NetMsmqBinding NetPeerTcpBinding U U X T = Seguridad-Transporte| S = WS-Security | O = Un-Sentido Solo 5.1 - Autenticación NTLM y básica Windows con binding basicHttpBinding (WS-I Basic Profile) Trazas de WCF Potente sistema de trazas de WCF Debido a la complejidad de las trazas, es necesario analizarlo con: Herramienta ‘Service Trace Viewer’ SvcTraceViewer.exe En SDK de .NET 3.0 5.2 – Encriptación(cifrado) de Servicio-WCF con WsHttpBinding (estándares WS-*) 5.3 - Autenticación Membership con binding WsHttpBinding 5.4 - Securización de Servicio-WCF con token CardSpace (InfoCard) Modelos de Comunicación Llamadas Asíncronas Opcion A: Desarrollar Servicio igual Gestionar llamadas asíncronas en el Cliente Opción B: Desarrollar Servicio-DUPLEX con callbacks Cambia desarrollo de Servicio y simplifica el Cliente Desarrollar Servicio asíncrono con attributo: [OperationContract(AsyncPattern=true)] 6.0 Llamadas Asíncronas a Servicios-WCF gestionadas desde el Cliente Modelos intercambio mensajes Request/Reply [OperationContract] string Saludar(string nombre); One-way Message [OperationContract(IsOneWay = true)] void Chat(string texto); Duplex Contracts [ServiceContract(CallbackContract = typeof(IChat)] public interface IChat { [OperationContract(IsOneWay = true)] void Chat(string texto); } 7.0 - Comunicación Duplex. - Conexión bidireccional - Asincronismo Comportamientos (Behaviors) Comportamientos (Behaviors) Se aplican los ‘Behaviors’ con el atributo ServiceBehaviorAttribute Se aplican en la clase (Implementación) También Behaviors a nivel de Binding Ejemplos: Pooling de instancias Impersonación, Protección, Autorización Gestión de Excepciones Comportamientos (Behaviors) Instanciación Singleton, Shared, Private, PerCall Concurrencia (Multiple, reentrant, single) Transacciones distribuidas entre varios Servicios (WS-AtomicTransaction) Identidad e Impersonación BEHAVIORS: 7.1 - Instanciación Session. (En ejemplo DUPLEX) Arquitectura N-Tier y SOA Mapeo a nivel físico Cliente ‘Smart’ Nivel Físico Cliente Cliente Web (ASP.NET) Componentes Componentes IU IU Componentes Componentes IU IU Comp.Proc.IU Comp.Proc.IU Agentes Agentes Svc. Svc. Comp.Proc.IU Comp.Proc.IU Capa Presentación Capa de Lógica de negocio Interfaz Servicios Servicios-Web Servicios-Web ASMX ASMX 2.0 2.0 Nivel Físico Componentes Aplicación Servicios Servicios WCF WCF Business Business Façade Façade Componentes Componentes base base de de Negocio Negocio Capa de Acceso a Datos Componentes Componentes ‘Entidad’ ‘Entidad’ desconectados desconectados Componentes Componentes de de acceso acceso aa datos datos (DAL) (DAL) Nivel Físico Datos Fuentes de datos Capas de Componentes Aplicación Arquitectura N-Layer y SOA Arquitectura lógica: N-Layered Capa de Presentación Capas Presentación Cliente ‘Smart’ Componentes Componentes IU IU Comp.Proc.IU Comp.Proc.IU Agentes Agentes Svc. Svc. Cliente Web Componentes Componentes IU IU Comp.Proc.IU Comp.Proc.IU Otros Clientes: - Office-VSTO - Pocket Framework - Windows Mobile - etc. Capa de Lógica de negocio Interfaz Servicios Servicios-Web Servicios-Web ASMX ASMX 2.0 2.0 Capas Componentes Aplicación Servicios Servicios WCF WCF Business Business Façade Façade Componentes Componentes base base de de Negocio Negocio Capa de Acceso a Datos Componentes Componentes ‘Entidad’ ‘Entidad’ desconectados desconectados Componentes Componentes de de acceso acceso aa datos datos (DAL) (DAL) Fuentes de datos Datos Lógicos Interfaz Interfaz Servicios Servicios Agentes Agentes Servicios Servicios Servicios SOA Externos 9.- Ejemplo de Aplicación empresarial (N-Tier y SOA) Haciendo uso de WCF. *.- Capas componentes Negocio y Acceso a Datos *.- Uso de System.Transactions *.- Capa presentación accediento a componentes de negocio mediante WCF Ejemplo Transacción Distribuida por Servicios-WCF Transacción Cliente Inicia Transferencia Serv.WCF Aplicacion Serv.WCF Banco-1 Cargo Cuenta A Abono Cuenta B Serv.WCF Banco-2 BEHAVIORS: 9.1.Uso de Transacciones Distribuidas entre diferentes Servicios. Extensibilidad WCF Extensibilidad con ‘custom Behaviors & Inspectors’ - Para crear comportamientos propios de un servicio. - Aspectos localizados en el servicio Out-of-the-box: Transacciones, instanciación, etc. Cualquier ‘Orientación a Aspectos’ a aplicar en Servicios WCF: - Enlazados con INSPECTORS de mensajes. (IDispatchMessageInspector, etc.) Logging, contextos, seguridad, autorización, etc. “La lista nunca acaba…” Extensibilidad con ‘custom Channels’ - Creación de ‘custom Channels’: - - Aspectos localizados en ambos extremos (Servicio y Cliente) Nuevos transportes: SMTP, UDP, etc. Integrar con otros sistemas, p.e. Java RMI Implementar protocolos de infraestructura propios Resumen WCF WCF ‘Desde fuera’… Cliente Servicio Bv Bv C B A Mensaje A B C Bv A B C Bv Address Binding Contract (Donde) (Como) (Qué) WCF ‘Desde dentro’… Servicio A B C Bv A B C Bv Resumen Servicio WCF Address Binding http://... HTTP Transport net.p2p://... Peer Transport net.tcp://... TCP Transport WSWS-Security Protocol Contract Request/ Response Behavior Instancing Behavior Concurrency Behavior Throttling Behavior WSWS-RM Protocol Metadata Behavior net.pipe://... net.msmq://... NamedPipe Transport MSMQ Transport WSWS-Coord Protocol OneOne-Way Custom Transport Transaction Behavior Custom Behavior Security Behavior Duplex Channel Duplex xxx://... Error Behavior Custom Protocol Visible Externamente, Por cada Endpoint Opaco, por-Servicio, endpoint, u operación Recursos Links Newsgroup http://msdn.microsoft.com/winfx/ microsoft.public.windows.developer. winfx.indigo E-Mail ctorre@renacimiento.com Contacto -- Consultoría -- Proyectos -- Formación César de la Torre Arquitecto de Software [Microsoft MVP - Connected Systems] [MCSE] [MCT] ctorre@renacimiento.com SOPORTE como MVP en NEWS publicas: msnews.microsoft.com microsoft.public.es.servicios.web