WCF - Conceptos e Introducción Descripción Windows Communication Foundation (WCF) es el modelo de p rogramación unificado de Microsoft para generar aplicaciones orientadas a se rvicios. WCF permite a las aplicaciones comunicarse si están en el mismo equipo, en Internet o en diferentes plataformas de aplicación. WCF admite muchos estilos de desarrollo de aplicaciones distribuidas proporcionando una arquitectura superpuesta. WCF se implementa principalmente como un conjunto de clases sobre .NET Framework CLR. Permitiendo que los programadores que crean aplicaciones orientadas a objetos utilizando .NET Framework, puedan fácilmente integrar aplicaciones orientadas a servicios.
La figura anterior muestra un cliente y un servicio WCF. Ambos interactúan utilizando SOAP. Aunque la figura muestra ambas partes generadas en WCF, esto no es necesario. Hay tres puntos a destacar como aspectos más importantes de WCF:
Unificación de las tecnologías de comunicación .NET Framework existentes.
Compatibilidad para interoperabilidad entre proveedores, incluyendo confiabilidad, seguridad y transacciones.
Orientación explícita al servicio.
Estado Homologado 2010Q1.
Requisitos del Sistema / Recursos del Sistema Operativo
Requisitos del Sistema
WCF viene instalado por defecto en Windows Vista. También puede instalarse en Windows XP SP2, Windows Server 2003 R2 o Windows Server 2003 SP1.
Nota La funcionalidad de Message Queue Server ( MSMQ ) de WCF sólo se admite en Windows Vista, Windows Server 2003 R2, Windows Server 2003 SP1 y Windows XP Professional.
Recursos del Sistema Operativo necesarios para WCF WCF depende de varios recursos proporcionados por el sistema operativo para su funcionamiento. La tabla siguiente hace una lista de esos recursos.
Recurso
Descripcion
Microsoft DTC (Coordinador de transacciones distribuidas)
Requerido para admitir las transacciones de OleTx.
Cola de mensajes (MSMQ)
Requerido para admitir la mensajería de confianza.
Internet Information Services (IIS)
Requerido si quiere utilizar IIS para hospedar su aplicación.
Servicio de activación de procesos de Windows (WAS)
Requerido si desea utilizar WAS para hospedar su aplicación.
Conceptos Básicos
Mensajería y extremos WCF se basa en la noción de comunicación basada en mensajes y cualquier cosa que se pueda modelar como un mensaje, se puede representar de manera uniforme en el modelo de
programación. Esto habilita una API unificada en todos los mecanismos de transporte diferentes. El modelo distingue entre clientes (aplicaciones que inician la comunicación) y servicios (aplicaciones que esperan y responden a la comunicación del cliente). Una única aplicación puede actuar como cliente y como servicio. Los mensajes se envían entre extremos. Los extremos son los lugares donde los mensajes se envían y/o reciben, y definen toda la información requerida para el intercambio de mensajes. Un extremo describe basandose en estándar dónde se deberían enviar los mensajes, cómo se deberían enviar y qué aspecto deberían tener los mensajes. Un servicio puede exponer esta información como metadatos que los clientes pueden procesar para generar clientes WCF adecuados.
Protocolos de comunicaciones Los mensajes se pueden enviar a través de intranets e Internet utilizando transportes comunes, como HTTP y TCP. Otros transportes incluidos admiten la comunicación con aplicaciones
Message Queue Server de Microsoft (MSMQ) y nodos en una malla de redes del mismo nivel. Se pueden agregar más mecanismos de transporte utilizando la extensión de WCF. WCF proporciona las siguientes codificaciones para dar formato a los mensajes:
Texto, una codificación interoperable.
Mecanismo de optimización de transmisión de mensajes (MTOM), que es una manera interoperable de enviar eficazmente datos binarios no estructurados a y desde un servicio.
Binaria para una transferencia eficaz. Se pueden agregar más mecanismos de codificación (por ejemplo, una codificación de compresión) utilizando la extensión de WCF.
Patrones de mensajes 1
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
WCF admite varios patrones de mensajería, incluida la comunicación de solicitud-respuesta, unidireccional y dúplex. Los transportes diferentes admiten patrones de mensajería diferentes y, por consiguiente, afectan a los tipos de interacciones que admiten. WCF también permite enviar mensajes de forma segura y fiable.
Arquitectura El siguiente gráfico muestra las capas principales de la arquitectura de Windows Communication Foundation (WCF).
Contratos - la capa contratos define los siguientes aspectos del mensaje: Contrato de datos - describe cada parámetro que constituye el mensaje que un servicio puede crear o utilizar. Contrato de mensaje - define partes específicas del mensaje utilizando los protocolos SOAP y permite un control más fino sobre las partes del mensaje cuando es necesario. Contrato de servicios - especifica las firmas de método actuales del servicio y se distribuye como una interfaz. Directivas y enlaces - incluyen los requisitos de seguridad y otras condiciones que se deben cumplir para comunicarse con un servicio.
Tiempo de ejecución de ser vicio - esta capa contiene los comportamientos en tiempo de ejecución del servicio. Limitación de peticiones - controla cuántos mensajes se procesan. Comportamiento de error - especifica lo que sucede cuando se produce un error interno en el servicio. Metadatos - rige cómo y si los metadatos se ponen a disposición del mundo externo. Instancias - especifica cuántas instancias del servicio se pueden ejecutar. Transacciones - habilita la recuperación de operaciones de transacción si se produce un error. Distribución - es el control de cómo la infraestructura WCF procesa un mensaje. Inspección de mensajes - facilidad para comprobar partes de un me nsaje. Filtro de parámetros - permite que se realicen acciones, basándose en filtros, en la cabecera del mensaje.
Mensajería - esta capa se compone de canales. Un canal es un componente que procesa un mensaje de alguna manera. Hay dos tipos de canales: de transporte y de protocolo. Los canales
de transporte leen y escriben mensajes de la red o algún otro punto de la comunicación. Los canales de protocolo implementan protocolos de procesamiento de mensajes, a menudo leyendo o
escribiendo cabeceras adicionales en el mensaje.
Alojamiento y activación - en su forma final, un servicio es un programa. Como otros programas, un servicio se debe ejecutar en un ejecutable. Esta capa define la forma en la que ese
servicio va a ejecutarse.
2
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
HOL. WCF (Windows Communication Services) Objetivo: Exponer contratos a través del mismo servicio por tcp
Crear un proyecto con la plantilla de WCF Services Library de nombre: WillyDev.Wcf.Services
Se crearan automáticamente 2 archivos IService,Service de bemos eliminarlos
3
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Agregar 2 Clases de Interface (sobre el proyecto clic derecho y seleccionar agregar clase)
Establecerle los nombres IContratoA.cs y IContratoB
Agregar referencia del ensamblado System.ServiceModel , clicl derecho en references del proyecto y ubicar el ensamblado Escribir el Código relacionado con la Interface IContratoA
4
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Escribir el Código relacionado con la Interface IContratoB
Modificar el archivo de configuración APP.CONFIG
5
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Agregar un proyecto con la plantilla de Aplicación de Consola de nombre: WillyDev.Wcf.Host
Agregar al proyecto en references el ensamblado: System.ServicesModel Agregar al proyecto en references el proyecto anterior: WillyDev.Wcf.Services Arrastrar el archivo de configuraciones APP.CONFIG del proyecto WillyDev.Wcf.Services Después de haber agregado las refe rencias de los ensamblados en el actual proyecto, escribir el código para activar el servicio a través de esta aplicación
6
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Después de haber escrito el código para hospedar el servicio WCF, a través de la aplicación de consola depuramos la aplicación independientemente (clic derecho sobre el proyecto actual)
Como observamos el servicio ya se encuentra hospedado mediante esta aplicación
Probando con Internet Explorer la generación del proxi, con la dirección y el puer to que se estableció en la configuración del archivo APP.CONFIG del HOST (http://localhost:8731 ) Importante: el Servicio WCF debe estar en ejecución (ver figura anterior)
7
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Tener en cuenta el comando enmarcado para generar e l proxi (svcutil.exe http://localhost:8731/?wsdl ) este se genera acontinuacion desde el Shell de comando de Visual Studio 2008
Generar los archivos de configuración y comunicación entre el cliente y servicio Ingresar al Shell de comando de VS2008 Tools
Importante: el servicio HOST WCF debe estar en ejecución (ejecutar sobre el proyecto WillyDev.Wcf.Host )
Copiar y pegar en el shell de comandos de Visual Studio 2008 el comando svcutil.exe http://localhost:8731/?wsdl generado en la prueba del Internet Explorer
Como observamos se generan 2 archivos el Servicio Cliente (ServicioGeneral.cs y output.config) estos archivos deberán ser copiados y pegados posteriormente en la aplicación cliente que se conecte por el proxi con los serv icios expuestos. 8
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Crear el Proyecto Cliente que consumirá los servicios WCF expuestos a través de TCP Agregar un proyecto con la plantilla de Aplicación de Consola de nombre: WillyDev.Wcf.ConsoleClient
Vista del código y referencias agregadas para la aplicación cliente que consume los servicios WCF expuestos a través de TCP
Los archivos en el rectángulo enmarcados App.config y ServiciosGenerales.cs , deben ser copiados de la unidad C:\, donde se generaron por medio del comando SVCUTIL, ver la pag. Anterior, (importante: el archivo output.config se debe modificar el nombre a App.Config) 9
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer
Configurar la Solución en sus propiedades para establecer una ejecución multiple de proyectos y establecer un orden o prioridad de ejecución de los proyectos Clic derecho en la solución, elegir Propiedades
Ejecutar la Solucion (F5)
10
Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer