Windows Communication Foundation (ejemplo).pdf
Transcript of Windows Communication Foundation (ejemplo).pdf
Windows Communication Foundation
Aroa Solana
Ejem
plo d
e lec
tura
Sinopsis: Sinopsis: Este texto se encuentra dedicado a la nue-va versión de Windows Communication Founda-tion dentro de su entorno .NET Framework 3.5.
Se abordan diversos temas relacionados con eldesarrollo de aplicaciones distribuidas y nuevosconceptos: arquitectura cliente/servicio, los enla-ces, la utilización de extremos para la comunica-ción distribuida, etc.
Se requiere conocer los fundamentos de Inter-net/Intranet, estar familiarizado XML, conocer elfuncionamiento del IIS, así como algunos conoci-mientos de programación orientada a objetos.
El lenguaje de programación utilizado a lo lar-go del texto es C#.
Aroa Solana Ruiz es Microsoft CertifiedIT Professional en Database Developer,también Microsoft Certified TechnologySpecialist en SQLServer 2005, .NETFra-mework 3.5,WindowsFormsApplications,SQL Server 2005, al igual que DatabaseDevelopment enSQLServer 2008.Actual-mente ostenta la certificación MCT (Mi-
crosoft Certified Trainer) con la que imparte cursos oficialesdeMicrosoft y trabaja como formadora en Alhambra-Eidos.
Ha impartido formación sobre la tecnología .NET, des-arrollo de aplicacionesWindows,Web, ADO,Distribuidas,WPF, WCF, WWF, Silverlight y UML; también en admi-nistración y desarrollo de bases de datos SQL Server, en2005 y 2008. Además posee experiencia en J2SE y J2EE.Dentro de la gestión de procesos posee la certificación ITILV2 Foundations.
Ejem
plo d
e lec
tura
Luarna
Windows Communication Foundation© Aroa Solana Ruiz, 2009© De esta edición: 2009, Luarna Ediciones, S.L.www.luarna.com
Madrid, diciembre de 2009
ISBN: 978-8492684-56-4Versión: 1.0
«Cualquier forma de reproducción, distribución, comunica-ción pública o transformación de esta obra solo puede ser re-alizada con la autorización de sus titulares, salvo excepciónprevista por la ley. Diríjase a CEDRO (Centro Español deDerechos Reprográficos, www.cedro.org) si necesita fotoco-piar o escanear algún fragmento de esta obra».
Ejem
plo d
e lec
tura
Windows CommunicationFoundation
Aroa Solana Ruiz
Ejem
plo d
e lec
tura
Índice
Índice ........................................................................5Introducción ...........................................................19
Arquitectura WCF................................................20Contratos..............................................................21Datos ....................................................................21Mensaje ................................................................21Servicio.................................................................22Tabla 1.1 ...............................................................24Policy y Binding...................................................24Service Runtime...................................................25Mensajes ...............................................................25Activación y Alojamiento.....................................26Características de WCF.......................................27Transacciones .......................................................27Alojamiento ..........................................................28Resumen...............................................................28
Capítulo 2Conceptos de WCF................................................33
Mensajes ...............................................................34Estructura de un mensaje ....................................34El sobre SOAP.....................................................35
Ejem
plo d
e lec
tura
Cabecera SOAP ...................................................36Cuerpo SOAP .....................................................37Programas de Mensajería.....................................41Clientes.................................................................42Servicio.................................................................43Intermediarios ......................................................45Patrones de Mensajería........................................46Simple...................................................................46Dúplex ..................................................................48Petición-Respuesta...............................................49Canales .................................................................50Pila de canales ......................................................51Seguridad..............................................................52Interoperabilidad..................................................52Transportes...........................................................53Servicios ...............................................................54Extremos ..............................................................57Direcciones...........................................................57Enlaces..................................................................58Contratos..............................................................63Comportamientos ................................................65
Capítulo 3Modelo de programación de WCF ........................67
Orientado a Servicios VSOrientado a Objetos.............................68
Modelo de Servicios.............................................70System.ServiceModel...........................................71System.ServiceModel.Channels ..........................72System.Transactions.............................................74ScvUtil.exe ...........................................................75
Ejem
plo d
e lec
tura
¿Cómo de útil es?.................................................76Usos Comunes .....................................................77Generación de código..........................................78Exportar Metadatos .............................................80Serialización/ Mensaje .........................................81Avanzada...............................................................81Miscelánea............................................................82Métodos de programación de WCF ...................83Declarativa ...........................................................84Explícita................................................................85Configuración ......................................................86Niveles de programación WCF ..........................88Tipado ..................................................................88No tipado .............................................................89Mensajes ...............................................................89El Proceso de desarrollo......................................90Creando nuestro primer servicio WCF..............91Código del Servicio............................................114Servicio.svc .........................................................115Web.config .........................................................115
Capítulo 4Direcciones ...........................................................117
Direcciones WCF..............................................117Tipos de Direcciones .........................................119Dirección de Extremo .......................................119Dirección Base ...................................................119Dirección MEX .................................................120Formato de Direcciones ....................................121Dirección HTTP...............................................122Dirección HTTPS.............................................123
Ejem
plo d
e lec
tura
Dirección TCP ..................................................124Dirección MSMQ..............................................124Dirección de Canalización con Nombre ..........125Dirección IIS......................................................126Programación de Direcciones en WCF............127La clase EndpointAdress ...................................128La propiedad de Identidad ................................129Colección de cabeceras ......................................132Programación de direcciones ............................133Dirección base....................................................133Dirección de Extremo .......................................135Especificar un fichero de configuración............135Especificación en Código ..................................137Dirección relativa...............................................138
Capítulo 5Enlaces ..................................................................140
Entendiendo los enlaces WCF ..........................140Enlaces predefinidos ..........................................142BasicHttpBinding...............................................144Propiedades BasicHttpBinding .........................145WsHttpBinding .................................................148WSDualHttpBinding.........................................152Propiedades WSDualHttpBinding ..................152WSFederationHttpBinding ..............................156Propiedades de WSFederationHttpBinding.....156NetTcpBinding ..................................................159Propiedades WS-ReliableMessaging ................160NetNamedPipeBinding .....................................164Propiedades NetNamedPipeBinding................164NetMsmqBinding ..............................................167
Ejem
plo d
e lec
tura
Propiedades NetMsmqBinding .........................168NetPeerTcpBinding ...........................................174Propiedades NetPeerTcpBinding......................174MsmqIntegrationBinding ..................................177Propiedades de MsmqIntegrationBinding ........177Programar Enlaces WCF ..................................181Usando Código ..................................................182Usando el Fichero de Configuración................206Caso Práctico .....................................................209
Capítulo 6Contratos ..............................................................211
Contratos WCF.................................................212Contratos y sus relaciones con el CLR.............213Service Contract ................................................213Atributo [ServiceContract] ................................216CallbackContract ...............................................217ConfigurationName...........................................218Name..................................................................219Namespace .........................................................220ProtectionLevel..................................................221SessionMode ......................................................222Tipos de Servicios..............................................223Typed..................................................................224Typed Messages .................................................225Untyped..............................................................226Atributo [OperationContract] ...........................227Action .................................................................227AsyncPattern ......................................................229IsInitiating ..........................................................230IsOneWay...........................................................232
Ejem
plo d
e lec
tura
IsTerminating.....................................................233Name..................................................................234ProtectionLevel..................................................234ReplyAction........................................................236Data Contracts ...................................................236Atributo [DataContract] ....................................237Name..................................................................240Namespace .........................................................241Atributo [DataMember].....................................241EmitDefaultValue ..............................................242IsRequiered ........................................................243Name..................................................................243Order ..................................................................244Atributo [KnownType] .....................................245MethodName.....................................................246Type....................................................................247Message Contracts .............................................247Atributo [MessageContract] .............................248HasProtectionLevel ...........................................249IsWrapped..........................................................250ProtectionLevel..................................................250WrapperName ...................................................251WrapperNamespace...........................................252Atributo [MessageHeader] ...............................252Actor...................................................................253MustUnderstand ................................................254Name..................................................................254Namespace .........................................................255Relay ..................................................................255Atributo [MessageBodyMember] .....................256Name..................................................................257
Ejem
plo d
e lec
tura
Order ..................................................................257Atributo [MessageProperty] ..............................258Name..................................................................259Programado contratos WCF.............................260Data Contract ....................................................260Message Contract ..............................................270
Capítulo 7Clientes.................................................................277
Arquitectura del cliente .....................................277Objetos Cliente ..................................................280ICommunicationObject.....................................280IExtensibleObject...............................................282Canales de Cliente .............................................283IClientChannel ..................................................283IContextChannel ...............................................284Factorías de Canales ..........................................285La Clase ChannelFactory .................................286Constructores.....................................................287Propiedades ........................................................287Métodos..............................................................289Método CreateChannel .....................................291Patrones de Comunicación del Cliente ............292One-Way............................................................293Solicitud/Respuesta............................................294Dúplex ................................................................297Servicio...............................................................298Cliente ................................................................301Cliente Dúplex usando DupplexChannelFactory
302Asíncrona............................................................304
Ejem
plo d
e lec
tura
Servicio...............................................................304Cliente ................................................................306Crear código de cliente......................................307Generar Código de cliente ................................308Definir Enlaces y Extremos de Cliente.............310Servicios Typed vs Servicios UnTyped .............313Invocar Operaciones de un Servicio Tipado.....314Invocar Operaciones de un Servicio no Tipado315Información de utilidad .....................................316Inicializar Canales interactivamente .................316Duración de la sesión y del canal ......................317Problemas de bloqueo .......................................318Manejo de Excepciones .....................................320Caso Práctico .....................................................321Ejemplo de programación de un Cliente..........321ChannelFactory..................................................321Dúplex ................................................................331
Capítulo 8Servicios ................................................................341
Tipos de Servicios..............................................341Typed..................................................................342Untyped..............................................................344Typed Message...................................................347Contratos de Servicio ........................................348Extremos de Servicio .........................................349A través de Código.............................................350A través del archivo de Configuración..............351Comportamientos de Servicio ...........................353Atributo ServiceBehavior...................................355AddressFilterMode ............................................356
Ejem
plo d
e lec
tura
AutomaticSessionShutdown ..............................357ConcurrencyMode.............................................358ConfigurationName...........................................359IgnoreExtensionDataObject..............................360IncludeExceptionDetailInFaults........................361InstanceContextMode........................................362ReleaseServiceInstanceOn-
TransactionComplete.............................363TransactionAutoCompleteOnSessionClose......364TransactionIsolationLevel .................................364TransactionTimeout ..........................................367UseSynchronizedContext ..................................368ValidateMustUnderstand ...................................368Atributo OperationBehavior..............................369AutoDisposeParameters.....................................370Impersonation ....................................................371ReleaseInstanceMode ........................................372TransactionAutoComplete.................................374TransactionScopeRequired................................375Throttling ..........................................................377InstanceContext .................................................379Manejo de Excepciones .....................................380FaultException ...................................................382Atributo FaultContract......................................383Programado un Ejemplo ...................................387
Capítulo 9Transacciones y Sesiones Fiables.........................398
Transacciones .....................................................399Atomicidad .........................................................400Consistencia .......................................................401
Ejem
plo d
e lec
tura
Aislamiento.........................................................401Durabilidad ........................................................402Atributos de Transaction en
System.ServiceModel ....................402Atributo ServiceBehavior...................................403Atributo OperationBehavior..............................406Atributo TransactionFlow..................................407Transación WS-Atomic .....................................408Especificar transacciones a través
de la configuración........................409Sesiones Fiables..................................................411Intercambio de Mensajes ...................................411Asegurar los mensajes ........................................416Colas...................................................................422WCF y las Colas ................................................426Buenas prácticas en el uso de Colas ..................438
Capítulo 10Seguridad ..............................................................398
Vista General......................................................442Conceptos...........................................................443Integridad ...........................................................444Confidencialidad ................................................444Autenticación .....................................................444Autorización .......................................................445¿Por qué seguridad WCF? ................................447Transferencia de Seguridad ...............................447Control de Acceso / Autenticación ...................449Miembro ASP.NET y Role Provider................452Administrador de autorizaciones. ......................456Modelo de identidad..........................................458
Ejem
plo d
e lec
tura
Auditoría.............................................................461Credenciales .......................................................462Comportamientos de Seguridad y Enlaces .......465Comportamientos de Seguridad........................465Credenciales de Servicio....................................466Credenciales de Cliente.....................................468Autorización de Servicio....................................470Auditoria de Servicio .........................................471Enlaces................................................................472BasicHttpBinding...............................................472WSHttpBinding.................................................473WSDualHttpBinding.........................................477NetTcpBinding ..................................................481NetNamedPipeBinding .....................................481MsmqIntegrationBinding ..................................482NetMsmqBinding ..............................................482WSFederationBinding.......................................483Asegurar Clientes y Servicios ............................484Recomendaciones...............................................488
Capítulo 11Interoperatibilidad e Integración.........................490
Interoperabilidad................................................491Protocolo de soporte para servicios Web..........491WSE (Mejoras de Servicios Web).....................496Servicio Web ......................................................496Cliente WCF ....................................................499Servicios Web ASP.NET...................................504WCF/ASP.NET Compatible con extremos .....505Extremos a través de código..............................506Extremos a través del archivo
Ejem
plo d
e lec
tura
de configuración .................................507Integración .........................................................508COM+ ................................................................509Herramienta de configuración del Modelo
de Servicio de COM + .......................510MSMQ ...............................................................514Servicios WCF y Clientes MSMQ ...................515
Capítulo 12Desplegar WCF....................................................518
Instalar Servicios WCF .....................................518Soporte de Sistemas Operativos ........................518Requisitos software ............................................519.NET Framework ..............................................519Internet Information Server ..............................520Microsoft Message Queuing .............................522Instalar el Servicio WCF...................................524IIS .......................................................................525Servicios Windows.............................................527Configuraciones de Servicios WCF..................528Actualización de Servicios .................................529Solución a problemasde instalaciones WCF ...530Comunicación Cliente/Servicio ........................531Comportamiento inesperado de servicios.........532Resumen.............................................................533
Capítulo 13Personalizar WCF ................................................535
La extensión de ServiceHost y la capadel Modelo de Servicio .....................536
Cliente ................................................................536
Ejem
plo d
e lec
tura
La Clase ClientRuntime ...................................538La Clase ClientOperation ................................539Dispensador........................................................546La Clase DispatchRuntime ..............................548La Clase DispatchOperation ............................552Comportamientos ..............................................556La extensión de la capa de canal........................557El canal del Cliente............................................559El canal del Servicio...........................................561Desarrollo de canales .........................................562Elegir el patrón de intercambio de mensajes....563Channel Factory y Channel Listener................565Añadir elementos de enlace ...............................566Extender Enlaces ...............................................569Construir Enlaces Personalizados .....................569Modificación de enlaces WCF..........................572
Capítulo 14Gestionar WCF ....................................................575
Trazas..................................................................576Realizar trazas de extremo a extremo................576Servicio de Trazas ..............................................581Actividad ............................................................582Proyecto ............................................................582Editor de configuración del Servicio ................583Configuración ...................................................586Servicios .............................................................586Cliente ................................................................587Enlaces................................................................588Diagnósticos.......................................................589Avanzado ............................................................590
Ejem
plo d
e lec
tura
Comportamientos de extremos ........................591Comportamientos de servicios ..........................592Extensiones.........................................................593Tareas..................................................................594Detalles...............................................................596Contador de Rendimiento.................................596
Capítulo 15Alojar Servicios WCF...........................................601
Alojar vs Auto-Alojamiento ...............................602Alojar ..................................................................602Auto-Alojar.........................................................603Rápida comparación...........................................604Opciones de alojamiento ...................................605Alojar en el IIS ...................................................605Alojar en Código Administrado ........................606Ejemplo de alojamiento .....................................609
Apédice ACaso Práctico Capítulo 5...................................625Caso Práctico Capítulo 7...................................630
Ejem
plo d
e lec
tura
Introducción
Este libro pretende ofrecer al lector los contenidos nece-sarios, aunque no todos, para poder preparar el examen decertificación deMicrosoft 70-503. Este libro ofrece al lec-tor una inmersión en el mundo de WCF, para que puedaprobar e ir investigando como apoyo en el estudio impres-cindible de esta materia, aún así hay que destacar que lomás importante es la experiencia que se adquiere en el trans-curso del estudio, de la creación propia de ejemplos, etc.
Para poder certificarse como MTCS: Windows Com-munication Foundation Applications, no solo hay que apro-bar el examen 70-503, sino también el 70-536 basado enMicrosoft .NET Framework- Application DevelopmentFoundation.
Después de esta pequeña introducción en las certificacio-nes empecemos a raspar en la superficie del profundo uni-verso que engloba Windows Communication Foundation.
Actualmente las empresas tienen la necesidad de poderinterconectar los procesos, las personas y la información.Por ello uno de los problemas más grandes a los que una
Ejem
plo d
e lec
tura
empresa ha de hacer frente es el poder integrar estos com-ponentes IT (aplicaciones, datos y sistemas).
La arquitectura Orientada a Servicios (SOA) proporcio-na una estrategia general de organización de elementos IT,en definitiva, nos brinda unmarco de diseño para la integra-ción de aplicaciones independientes de manera que se pue-da desde la red acceder a sus funcionalidades, las cuales seofrecen como servicios. WCF se basa en esta arquitectura.
Arquitectura WCF
En el corazón de WCF está una arquitectura de capas quesoporta una gran variedad de estilos para el desarrollo de apli-caciones distribuidas. La siguiente imagen ilustra la arqui-tectura de capas de Windows Communication Foundation.
Ilustración 1.1:Arquitectura en Capas de WCF
Ejem
plo d
e lec
tura
Esta arquitectura en capas, brinda a los desarrolladoresun nuevo modelo de programación orientado a servicios.
Contratos
Los contratos WCF contienen información relativa a loque un servicio ofrece al cliente y el tipo de informaciónque va a poner a disposición.
Existen tres tipos de contratos: de datos, de mensaje yde servicio.
Datos
Un contrato de datos estipula de manera explícita los da-tos que se intercambiarán con el servicio. El servicio y elcliente no necesitan llegar a un acuerdo sobre los tipos,pero si necesitan llegar a un acuerdo sobre los datos delcontrato. Esto incluye los parámetros y el tipo de retorno.
Mensaje
Un contrato de mensaje proporciona un control adicionalsobre un contrato de datos, en la medida en la que contro-la los mensajes SOAP enviados y recibidos por el servicio.En otras palabras, un contrato de mensaje permite perso-nalizar el tipo de formato de de los parámetros en los men-sajes SOAP.
Ejem
plo d
e lec
tura
Lamayoría de las veces un contrato de datos es suficien-te, pero en ocasiones puede que un poco más de controlsea necesario.
Servicio
Un contrato de servicio informa a los clientes, de lo queofrece el servicio y como comunicase con él. Piense en ellocomo una sola declaración, en la que básicamente dice «aquíestán los tipos de datos de mis mensajes, aquí es donde es-toy ubicado, y aquí están los protocolos con los que me co-munico».
Los contratos son definidos por el CLR por medio declases o interfaces. Éstas, al ser utilizadas en los servicios,son convertidas a un formato común para que el serviciopueda ser usado por distintas plataformas con total com-patibilidad.
El Service Contract es convertido en un WSDL queobtiene la descripción de las operaciones ofrecidas por elservicio (según lo definido en el Service Contract).
El Data Contract es convertido en un XML Schemaque contiene la estructura del objeto enviado o solicitadopor el servicio.
El Message Contract es convertido en un mensajeSOAP.
Ejem
plo d
e lec
tura
Ilustración 1.2
COMPORTAMIENTO CARACTERÍSTICAS
Capacidad Determina el número de mensajes que seprocesan
Error Especifica que acción se tomará si se pro-duce un error durante el servicio Runtime
Metadatos Controla si los metadatos están o no ex-puestos al mundo exterior
Instanciación Establece el número de instancias de unservicio
Inspección Proporciona al servicio la capacidad deinspeccionar la totalidad o una parte delmensaje
Ejem
plo d
e lec
tura
Transacciones Permite operaciones transaccionales, esdecir, si un proceso falla durante la ejecu-ción de un servicio, tener la capacidad depoder deshacerlo
Dispensador Cuando un mensaje se ha procesado porla infraestructura WCF, se determina laforma en que el mensaje está siendo ma-nejado y procesado
Concurrencia Determina como cada uno de los servi-cios, o instancias, manejan hilos. Este com-portamiento ayuda a controlar el núme-ro de hilos que pueden tener acceso a unadeterminada instancia de un servicio
Filtrado Permite filtrar la información contenidade parámetros en la cabecera de los mensajesT
Tabla 1.1
Policy y Binding
Los contratos de política y enlace (Policy y Binding) espe-cifican información importante como la seguridad, el pro-tocolo y otra información, de manera que esto se verificaantes de que empiece con la comunicación.
Ejem
plo d
e lec
tura
Service Runtime
El servicio Runtime es la capa que especifica y administralos comportamientos del servicio que ocurren durante latransferencia de información con los clientes.
La tabla 1.1 muestra los diferentes comportamientosque son gestionados por la capa del servicio Runtime.
Mensajes
La capa de mensajería define qué formatos y pautas de in-tercambio de datos pueden ser utilizados por el servicio decomunicación. Las aplicaciones cliente pueden ser desarro-lladas para acceder a esta capa ymanejar los detalles demen-sajería y trabajar directamente con los mensajes y canales.
La siguiente tabla muestra los canales y componentesque forman parte de la capa de mensajería:
COMPONENTES CARACTERÍSTICAS
Canal de seguridad Implementa la especificación de la segu-ridad, estableciendo seguridad en el men-saje
Canal fiable Garantiza la entrega del mensajede mensajería
Codificadores Permiten elegir entre diferentes codifica-dores, para después aplicarlos a mensajes
Ejem
plo d
e lec
tura
Canal HTTP Establece que el servicio de entrega demensajes se llevará a cabo a través del pro-tocolo HTTP
Canal TCP Establece que el servicio de entrega demensajes se llevará a cabo a través del pro-tocolo TCP
Canal del flujo Rige los patrones de los mensajes guiadosde transacciones por transacciones
Canalizaciones Permite comunicar procesoscon nombre
Canal MSMQ Canal utilizado por los servicios que inter-actúan con el servicio de colas de mensa-jes MSMQ
Tabla 1.2
Activación y Alojamiento
La capa de activación y alojamiento ofrece diferentes op-ciones en las que un servicio puede ser iniciado, así comoalojado. Los servicios pueden ser alojados en el contextode otra aplicación o pueden ser auto alojados.
La siguiente tabla muestra las opciones de activación yalojamiento proporcionados por esta capa:
Ejem
plo d
e lec
tura
OPCIONES CARACTERÍSTICAS
Servicio de Permite a las aplicaciones WCF que seActivación inicien automáticamente cuando se ejecu-de Windows tan en un equipo que tiene activo el servi-
cio de activación de Windows
.EXE WCF permite a los servicios que se eje-cuten como archivos ejecutables (.exe)
Servicios WCF permite a los servicios que se eje-de Windows cuten como servicios de Windows
COM+ WCF permite a los servicios que se eje-cuten como aplicaciones COM+
Tabla 1.3
En resumen, si el alojamiento se realiza sobre IIS, tenemosla posibilidad de registrar nuestros servicios para que la ac-tivación de éstos se produzca automáticamente la primeravez que un cliente accede a ellos. Esto quiere decir que siun mensaje llega a un servicio que no está activo, éste seactivará automáticamente.
CARACTERÍSTICAS DE WCF
Transacciones
Una transacción es una unidad de trabajo. Una transacciónse asegura que todo lo que la compone termine con éxito,si algo fallara, todo se deshace, es decir, todo o nada. Porejemplo, si una transacción contiene tres tareas de trabajo
Ejem
plo d
e lec
tura
para llevar a cabo, y durante la ejecución de esta trans-acción una de las tareas falla, entonces fallan las tres. Eléxito de la transacción sólo sucederá si todas las tareasque la componen terminan con éxito. WCF incorporaeste mismo procesamiento de transacciones en su comu-nicación.
Alojamiento
WCF permite alojar servicios que se han alojado en unconjunto de diferentes entornos, tales como servicios deWindows NT,Windows Forms, aplicaciones de consola yservicios de activación de Windows.
El alojamiento de un servicio en IIS añade unos bene-ficios, como el poder manejar la puesta en marcha y la pa-rada de un servicio de manera automática.
Resumen
Windows Communication Foundation es el siguiente pasode Microsoft en la creación de aplicaciones orientadas aservicios y aplicaciones distribuidas.
Las aplicaciones distribuidas se vuelven cada día máscomplejas, y es primordial que nuestros negocios estén co-nectados. Esta globalización informática requiere la inter-acción y la conectividad entre diferentes plataformas e in-contables dispositivos. Windows CommunicationFoundation fue concebido con el objetivo de simplificar eldesarrollo de aplicaciones distribuidas.
Ejem
plo d
e lec
tura
Una de sus principales características es que cuenta conun modelo de programación unificado. Es la unificaciónde numerosas capacidades que antes podíamos encontraren distintas tecnologías. Esto nos libra de tener que estarutilizando más de una tecnología para cumplir satisfacto-riamente los requerimientos. De este modo, los desarro-lladores harán una tarea de una única manera.
Las comunicaciones se enriquecen notablemente, ya queWindows Communication Foundation da la libertad al des-arrollador de utilizar múltiples transportes, distintos tiposde formatos de mensajes y diversos patrones de mensajes.
La interoperabilidad es el plato fuerte deWindowsCom-munication Foundation, ya que la comunicación es total-mente independiente de la plataforma. Los servicios utili-zados son sobres de SOAP, cuyo contenido es nada menosque XML.Windows Communication Foundation está ba-sado en la arquitectura deWeb Services y utiliza los están-dares establecidos.
Ilustración 1.3Estructura del Framework 3.0
Ejem
plo d
e lec
tura
El transporte es otra de sus cualidades fuertes, ya queéste se define con un protocolo neutral, de transporte neu-tral y formato neutral. Esto quiere decir que los serviciospueden utilizar tanto HTTP como TCP u otro mecanis-mo de transporte. Los desarrolladores tienen la posibili-dad de agregar nuevos proveedores de transporte, y estoes indiferente al servicio.Windows Communication Foun-dation separa el «código» del «transporte», y de esta ma-nera soporta distintos métodos de comunicación, sin re-presentar esto una carga de trabajo extra para eldesarrollador.
En la ilustración 1.3 se muestra la estructura del Frame-work 3.0 donde ya está WCF.
Aunque en la ilustración se muestra el Framework 3.0,actualmente la versión más reciente con la que contamoses el Framework 3.5 que incluye hasta el día de hoy algu-nas características como:
• Nuevas funcionalidades de los compiladores de C#3.0y VB.NET 9.0
• Soporte para árboles de expansión y métodos lambda• Métodos de extensión• Árboles de extensión para representar el código de altonivel en tiempo de ejecución
• Tipos anónimos con inferencia de tipo estático• Language Integrated Query (LINQ) contra diferen-tes orígenes.
Los cuatro componentes «nuevos» que se observan enla ilustración son:Ej
emplo
de
lectu
ra
• Windows Presentation Foundation (WPF) (Avalon).Nuevo subsistema de interfaces de usuario basado enXML, gráficos vectoriales que hacen uso de gráficos3D y tecnologías Direct3D.
• Windows Communication Foundation (WCF) (Índi-go). Sistema de mensajería orientado a objetos quepermite a las aplicaciones interoperar de manera lo-cal o remota de la misma forma que los serviciosWeb.
• WindowsWorkflow Foundation (WF). Permite cons-truir flujos de trabajo para automatizar tareas y trans-acciones.
• Windows CradSpace (InfoCard). Componente soft-ware que almacena identidades digitales de personasy ofrece la posibilidad de elegir una identidad para eje-cutar aplicaciones.
Por último, vamos a exponer un ejemplo, para ver quétipos de problemas puede resolver WCF.
Una compañía de alquiler de coches decide crear unanueva aplicación para reservar los coches. Los creadoresde esta aplicación de reserva de coches de alquiler sabenque la lógica empresarial que implementa debe ser accesi-ble por otro software que se ejecute dentro y fuera de lacompañía. De acuerdo con, esto, deciden integrarlo en unsitio orientado a servicios, con la lógica de la aplicación ex-puesta a otro software a través de un conjunto bien deter-minado de servicios. Para implementar estos servicios y asícomunicar con otro software, la nueva aplicación, utiliza-rá WCF.Ej
emplo
de
lectu
ra
Ilustración 1.4Ejemplo de aplicación en WCF
Ejem
plo d
e lec
tura