Hola, esta semana les hablaremos sobre los principios. Para empezar, un principio no es más que una buena práctica para lograr un objetivo, está basado en la experiencia y es ampliamente aceptado por la industria. A continuación les describimos los principios de diseño de SOA:
Contratos de Servicio Estandarizados
Cada servicio debe establecer un contrato con el cliente donde se especifique: nombre del servicio, forma de acceso, funcionalidades, parámetros de entrada y salida. En caso de ser necesaria una modificación a la implementación del servicio, se debe respetar el contrato, por lo tanto se logra una independencia entre el cliente y la implementación del servicio.
Servicios Débilmente Acoplados
Debe haber un bajo acoplamiento entre un servicio y los clientes que lo usan, esto se logra con los contratos, ya que estos esconden la lógica del servicio y garantizan una forma estándar de invocación, de modo que si se llega a cambiar la implementación del servicio, éste será el único punto de actualización, no será necesario modificar la forma en que los clientes hacen el llamado.
Reusabilidad de Servicios
La reutilización es el pilar de SOA, cada servicio debe ser pensado de modo que se pueda explotar al máximo su uso, es decir, que sea de algún modo genérico con el fin de que pueda ser usado en diferentes contextos y satisfacer distintos objetivos, este es el caso de los procesos de negocio donde cada uno de estos puede tener un propósito totalmente distinto del otro y aún así estar usando un mismo servicio.
Autonomía de Servicios
Cada servicio SOA es mantenido, desarrollado, instalado y versionado de forma independiente. De esta forma el servicio es autónomo y podemos asegurar que podrá ser reutilizable desde el punto de vista de la plataforma de ejecución.
Servicios sin Estado
Los servicios no deben depender del estado de otros servicios, esta independencia garantiza la posibilidad de reutilización de estos en variados contextos. Para lograr esta independencia, un servicio no debe conservar información del cliente que lo usa, tan solo debe recibir en el mensaje de invocación los argumentos necesarios para llevar a cabo su tarea y dar una respuesta, sin dejar algún rastro de la información dentro del servicio.
Descubrimiento de Servicios
Para garantizar la reutilización de los servicios y evitar realizar implementaciones de servicios ya existentes pero desconocidos, se debe proveer de algún método o herramienta que permita descubrirlos; UDDI (Universal Description Discovery and Integration) es un mecanismo y repositorio basado en XML que permite registrar web services, publicarlos y realizar consultas sobre sus contratos para poder interactuar con estos.
Composición de Servicios
En la medida en que las soluciones orientadas a servicios crecen, así crece la complejidad de las mismas, Por esta razón Los servicios deben ser construidos para ser parte de servicios más complejos, a si mismo se necesita de conceptos como orquestación y coreografía para cumplir con el propósito del servicio compuesto.
Referencias
http://www.soapatterns.org/patterns_principles.php
http://info-soa.blogspot.com/2010/09/principios-de-una-arquitectura.html
http://www.ibm.com/developerworks/library/ws-soaintro.html
http://en.wikipedia.org/wiki/Universal_Description_Discovery_and_Integration