Está en la página 1de 10

WCF - Conceptos e Introduccin

Descripcin
Windows Communication Foundation (WCF) es el modelo de programacin unificado de Microsoft para generar aplicaciones orientadas a servicios. WCF permite a las aplicaciones comunicarse si estn en el mismo equipo, en Internet o en diferentes plataformas de aplicacin. 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 fcilmente integrar aplicaciones orientadas a servicios.

La figura anterior muestra un cliente y un servicio WCF. Ambos interactan utilizando SOAP. Aunque la figura muestra ambas partes generadas en WCF, esto no es necesario. Hay tres puntos a destacar como aspectos ms importantes de WCF:

Unificacin de las tecnologas de comunicacin .NET Framework existentes. Compatibilidad para interoperabilidad entre proveedores, incluyendo confiabilidad, seguridad y transacciones. Orientacin explcita al servicio.

Estado
Homologado 2010Q1.

Requisitos del Sistema / Recursos del Sistema Operativo

Requisitos del Sistema WCF viene instalado por defecto en Windows Vista. Tambin 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 slo 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 Microsoft DTC (Coordinador de transacciones distribuidas) Cola de mensajes (MSMQ) Internet Information Services (IIS) Servicio de activacin de procesos de Windows (WAS) Descripcion Requerido para admitir las transacciones de OleTx. Requerido para admitir la mensajera de confianza. Requerido si quiere utilizar IIS para hospedar su aplicacin. Requerido si desea utilizar WAS para hospedar su aplicacin.

Conceptos Bsicos

Mensajera y extremos WCF se basa en la nocin de comunicacin basada en mensajes y cualquier cosa que se pueda modelar como un mensaje, se puede representar de manera uniforme en el modelo de programacin. Esto habilita una API unificada en todos los mecanismos de transporte diferentes. El modelo distingue entre clientes (aplicaciones que inician la comunicacin) y servicios (aplicaciones que esperan y responden a la comunicacin del cliente). Una nica aplicacin puede actuar como cliente y como servicio. Los mensajes se envan entre extremos. Los extremos son los lugares donde los mensajes se envan y/o reciben, y definen toda la informacin requerida para el intercambio de mensajes. Un extremo describe basandose en estndar dnde se deberan enviar los mensajes, cmo se deberan enviar y qu aspecto deberan tener los mensajes. Un servicio puede exponer esta informacin como metadatos que los clientes pueden procesar para generar clientes WCF adecuados.

Protocolos de comunicaciones

Los mensajes se pueden enviar a travs de intranets e Internet utilizando transportes comunes, como HTTP y TCP. Otros transportes incluidos admiten la comunicacin con aplicaciones Message Queue Server de Microsoft (MSMQ) y nodos en una malla de redes del mismo nivel. Se pueden agregar ms mecanismos de transporte utilizando la extensin de WCF. WCF proporciona las siguientes codificaciones para dar formato a los mensajes:

Texto, una codificacin interoperable. Mecanismo de optimizacin de transmisin 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 ms mecanismos de codificacin (por ejemplo, una codificacin de compresin) utilizando la extensin de WCF. Patrones de mensajes 1 Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

WCF admite varios patrones de mensajera, incluida la comunicacin de solicitud-respuesta, unidireccional y dplex. Los transportes diferentes admiten patrones de mensajera diferentes y, por consiguiente, afectan a los tipos de interacciones que admiten. WCF tambin permite enviar mensajes de forma segura y fiable.

Arquitectura
El siguiente grfico 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 parmetro que constituye el mensaje que un servicio puede crear o utilizar. Contrato de mensaje - define partes especficas del mensaje utilizando los protocolos SOAP y permite un control ms fino sobre las partes del mensaje cuando es necesario. Contrato de servicios - especifica las firmas de mtodo 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 ejecucin de servicio - esta capa contiene los comportamientos en tiempo de ejecucin del servicio. Limitacin de peticiones - controla cuntos mensajes se procesan. Comportamiento de error - especifica lo que sucede cuando se produce un error interno en el servicio. Metadatos - rige cmo y si los metadatos se ponen a disposicin del mundo externo. Instancias - especifica cuntas instancias del servicio se pueden ejecutar. Transacciones - habilita la recuperacin de operaciones de transaccin si se produce un error. Distribucin - es el control de cmo la infraestructura WCF procesa un mensaje. Inspeccin de mensajes - facilidad para comprobar partes de un mensaje. Filtro de parmetros - permite que se realicen acciones, basndose en filtros, en la cabecera del mensaje.

Mensajera - 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 algn otro punto de la comunicacin. Los canales de protocolo implementan protocolos de procesamiento de mensajes, a menudo leyendo o escribiendo cabeceras adicionales en el mensaje. Alojamiento y activacin - 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.

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

HOL. WCF (Windows Communication Services)


Objetivo: Exponer contratos a travs del mismo servicio por tcp

Crear un proyecto con la plantilla de WCF Services Library de nombre: WillyDev.Wcf.Services

Se crearan automticamente 2 archivos IService,Service debemos eliminarlos

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 Cdigo relacionado con la Interface IContratoA

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

Escribir el Cdigo relacionado con la Interface IContratoB

Modificar el archivo de configuracin APP.CONFIG

<?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <compilation debug="true" /> </system.web> <system.serviceModel> <services> <service name="WillyDev.Wcf.Services.ServicioGeneral" behaviorConfiguration="WillyDevBehavior"> <host> <baseAddresses> <add baseAddress = "http://localhost:8731/" /> <add baseAddress = "net.tcp://localhost:8732/ "/> </baseAddresses> </host> <endpoint address ="ContratoA" bindingConfiguration ="myBinding" binding="netTcpBinding" contract="WillyDev.Wcf.Services.IContratoA" /> <endpoint address ="ContratoB" bindingConfiguration ="myBinding" binding="netTcpBinding" contract="WillyDev.Wcf.Services.IContratoB" /> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> </service> </services> <bindings> <netTcpBinding> <binding name="myBinding"> <security mode="None" /> </binding> </netTcpBinding> </bindings> <behaviors> <serviceBehaviors> <behavior name="WillyDevBehavior"> <serviceMetadata httpGetEnabled="True"/> <serviceDebug includeExceptionDetailInFaults="True" /> </behavior> </serviceBehaviors> </behaviors> </system.serviceModel> </configuration>

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

Agregar un proyecto con la plantilla de Aplicacin 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 Despus de haber agregado las referencias de los ensamblados en el actual proyecto, escribir el cdigo para activar el servicio a travs de esta aplicacin

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

Despus de haber escrito el cdigo para hospedar el servicio WCF, a travs de la aplicacin de consola depuramos la aplicacin independientemente (clic derecho sobre el proyecto actual)

Como observamos el servicio ya se encuentra hospedado mediante esta aplicacin

Probando con Internet Explorer la generacin del proxi, con la direccin y el puerto que se estableci en la configuracin del archivo APP.CONFIG del HOST (http://localhost:8731) Importante: el Servicio WCF debe estar en ejecucin (ver figura anterior)

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

Tener en cuenta el comando enmarcado para generar el proxi (svcutil.exe http://localhost:8731/?wsdl) este se genera acontinuacion desde el Shell de comando de Visual Studio 2008 Generar los archivos de configuracin y comunicacin entre el cliente y servicio Ingresar al Shell de comando de VS2008 Tools

Importante: el servicio HOST WCF debe estar en ejecucin(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 debern ser copiados y pegados posteriormente en la aplicacin cliente que se conecte por el proxi con los servicios expuestos.
8 Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer

Crear el Proyecto Cliente que consumir los servicios WCF expuestos a travs de TCP Agregar un proyecto con la plantilla de Aplicacin de Consola de nombre: WillyDev.Wcf.ConsoleClient

Vista del cdigo y referencias agregadas para la aplicacin cliente que consume los servicios WCF expuestos a travs de TCP

Los archivos en el rectngulo 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 Solucin en sus propiedades para establecer una ejecucin multiple de proyectos y establecer un orden o prioridad de ejecucin de los proyectos Clic derecho en la solucin, elegir Propiedades

Ejecutar la Solucion (F5)

10

Wilfredo Ruiz Sosa. MCTS (Microsoft Certified Technology Specialist) & JEE - Java Developer