Share via


Arquitecturas orientadas a servicios (SOA)

SOA son las siglas en inglés de “Service-Oriented Architecture”, o lo que es lo mismo Arquitectura Orientada a Servicios.

Como ya he indicado en anteriores post la orientación a servicios es una aproximación para construir sistemas usando servicios que se adhieren a los siguientes cuatro ideas base:

  1. Los límites son Explícitos
  2. Los servicios son Autónomos
  3. Los servicios comparten esquemas y contratos; y en teoría nada mas
  4. La compatibilidad de los servicios se determina con base en políticas

Antes de seguir veamos algunas definiciones clave:

  • Servicio
    • Componente que representa una unidad lógica de un proceso de negocio completo, al cual es posible acceder programáticamente desde contextos independientes a través de una interfaz abierta y documentada.
  • Sistema
    • Conjunto de servicios en producción que cooperan en la consecución de una misma tarea. Los servicios se crean para ser estables, mientras que los sistemas se crean pensando en el cambio, y la adaptación toma forma de nuevos servicios agregados a la arquitectura.
  • Servicios Horizontales
    • Ciertos servicios vienen heredados del ambiente de implementación, y permiten cubrir requerimientos no relacionados con la funcionalidad principal, tales como requerimientos de seguridad, auditoría, monitoreo, etc.
    • Estos servicios son llamados Servicios Horizontales, por la idea de que cruzan de lado a lado la arquitectura, formando parte integral de varios grupos de servicios.

En la actualidad, Microsoft proporciona tecnologías para implementar Arquitecturas Orientadas a Servicios desde el Framework 2.0 de .NET hasta productos finales como BizTalk Server 2006 o Connected Services Framework (CSF) 3.0.

Sin embargo, la siguiente versión del Framework de .NET (3.0) nos proporciona nuevas capacidades para la implementación de las Arquitecturas Orientadas a Servicios; lo más significativo desde mi punto de vista es Windows Communication Foundation (WCF).

WCF es el marco de trabajo unificado de Microsoft para el desarrollo de aplicaciones distribuidas seguras, confiables, interoperables y transaccionales. Se ha diseñado haciendo énfasis en la interoperabilidad.

Como posiblemente ya sepas, el Framework 3.0 de .NET es una extensión del potente Framework 2.0 .NET al que se ha dotado de las siguientes tecnologías:

  1. Windows Communication Foundation (WCF): aplicaciones que se comunican fluidamente a través de fronteras tecnológicas.
  2. Windows Presentation Foundation (WPF): aplicaciones que ofrecen una experiencia de usuario con un alto atractivo visual.
  3. Windows Workflow Foundation (WF): aplicaciones que soportan un amplio rango de procesos de negocio.
  4. Windows Cardspace ( WCS): aplicaciones que permiten manejar de forma segura la información personal en línea.

Centrandonos de nuevo en WCF, las principales innovaciones se resumen en 3 areas principales:

  1. Unificación de las Tecnologías de Aplicaciones Distribuidas de Microsoft
    • En la actualidad, es posible abordar el desarrollo de aplicaciones distribuidas por diferentes vías, dependiendo de los requerimientos particulares de interacción, persistencia, seguridad, etc. Por lo que Microsoft provee diferentes tecnologías, tales como:
      • Servicios Web ASP.NET (ASMX)
      • .NET Remoting
      • Enterprise Services (COM+)
      • Web Services Enhancements (WSE)
      • Microsoft Message Queuing (MSMQ)
    • WCF reúne estas tecnologías en un modelo de programación unificado, resolviendo los problemas que cada una de ellas intentan resolver por separado.
  2. Interoperabilidad con Aplicaciones no Basadas en Tecnologías Microsoft
    • Dado que el mecanismo fundamental de comunicación de WCF es SOAP, le permite interactuar con otros sistemas ejecutandose en una variedad de contextos.
    • Adicionalmente, para proveer algo más que servicios web básicos, WCF implementa en su totalidad un conjunto de tecnologías colectivamente conocidas como WS-*.
  3. Orientación a Servicios
    • WCF fue diseñado desde un inicio teniendo como premisas los cuatro preceptos de la orientación a servicios mencionados al comienzo de este post, lo cual permite ofrecer un modelo de desarrollo que refuerza este paradigma y que por ello permite disfrutar de todos sus beneficios.