Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
en Servicios
Por José David Parra
"Entienda cómo una Arquitectura Orientada a Servicios (SOA) posibilitará la rápida creación de
aplicaciones basadas en comunidades de servicios interoperables."
En las últimas décadas, los departamentos de IT de las empresas han venido constru-yendo una
infraestructura que actualmente soporta en gran medida la operación de sus empresas y sus clientes.
El camino para llegar hasta este punto no ha sido fácil. Se ha aprendido de los errores y aciertos de
la industria. El resultado de este proceso, ha sido la creación y mantenimiento de un número
considerable de aplicaciones al interior de las empresas, cada una responsable de sus propias tareas.
El negocio cada vez exige crear aplicaciones más complejas, con menos tiempo y presu-puesto que
antes. Crear estas aplicaciones, requiere en muchos casos de funcionalida-des ya antes
implementadas como parte de otros sistema. En este punto los arquitectos de soluciones tienen dos
opciones:
Por su facilidad y aunque no es la mas acertada a largo plazo, la segunda opción es la mas escogida.
Esto trae como resultado:
Figura 1. Un sistema sencillo basado en servicios. Una aplicación además de implemen-tar sus
propios componentes de negocio y datos, también puede reutilizar la funcionalidad de servicios
existentes en la red empresarial.
Un servicio debe ser una aplicación completamente autónoma e independiente. A pesar de esto, no
es una isla, porque expone una interfaz de llamado basada en mensajes, capaz de ser accedida a
través de la red. Generalmente, los servicios incluyen tanto ló-gica de negocios como manejo de
estado (datos), relevantes a la solución del problema para el cual fueron diseñados. La manipulación
del estado es gobernada por las reglas de negocio.
Figura 2: Visión interna de los servicios. Un servicio funciona como una aplicación independien-
te. Teniendo sus propias reglas de negocio, datos, procedimientos de administración y operación.
Ex-pone toda su funcionalidad utilizando una interfaz basada en mensajes. Y por lo tanto carece de
una interfaz de usuario.
• Mucho menos acoplados con sus aplicaciones cliente que los componentes.
• Menor granularidad que los componentes.
• No son diseñados e implementados necesariamente como parte de una aplicación end-to-
end.
• Son controlados y administrados de manera independiente.
• Expone su funcionalidad a través de protocolos abiertos e independientes de plata-forma.
Incluso arriesgando el rendimiento y consumo de recursos.
• Son transparentes de su localización en la red, de esta manera garantizan escalabili-dad y
tolerancia a fallos.
• Tienen sus propias políticas de escalabilidad, seguridad, tolerancia a fallos, manejo de
excepciones, configuración, etc.
El servicio debe publicar una interfaz (por ejemplo, utilizando WSDL o proxies) fácilmen-te
localizable en la red. Esta interfaz debe servir como un contrato de servicio. Donde se describen
cada una de las funciones que provee, e incluso los niveles de prestación de servicio (SLA). Esta
interfaz debe estar claramente documentada de manera que sea muy fácil implementar una
conexión.
Un diseño exitoso de una arquitectura basada en servicios debe estar basado en una plataforma de
mensajería confiable, que aísle de la implementación funcional muchos de los problemas
anteriormente mencionados. Algunas de las responsabilidades de un me-canismo así, incluyen:
Entre mas de estas características tenga la tecnología elegida, menos problemas tendrá la solución
final en operación.
Una comunicación basada en mensajes por lo general implica que no existen sesiones. Por lo tanto,
los clientes no guardan estado en el servicio (mayor escalabilidad), y la au-tenticación se debe dar a
nivel de cada mensaje.
Por ultimo, los servicios deben ser diseñados para controlar internamente la transaccio-nalidad de
sus propias operaciones. No es recomendable que una transacción traspase los límites de un
servicio.
Una solución lógica a este problema es extraer los aspectos de procedimiento de varios servicios
dentro de uno dedicado, llamado servicio de negocio. Un servicio de negocio controla las acciones
paso a paso en la ejecución de algún trabajo, moviendo el sistema de un estado a otro. En cada paso,
este llamara una operación de negocio provista por un servicio.
Así, un servicio de negocio centraliza la definición del proceso, en vez de tener piezas del proceso
entre todos los servicios. Esto disminuye las dependencias entre servicios y las aplicaciones
clientes. Ayudando a facilitar la administración del sistema.
Figura 4: Un modelo mas simplificado. Introducir el concepto de servicios de negocio nos simplifi-
co considerablemente la arquitectura que se mostró en la figura 3. Aquí simplemente consolidamos
funcionalidades creando algunos servicios de negocio que hacen llamadas al resto de servicios.
Una comparación más completa entre Remoting y Web Services puede encontrarla en:
http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/cpguide/html/cpconchoosingcommunicationoptionsinnet.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/bdadotnetarch14.asp
¿Qué es WSE?
Los Web Services Extensions constituyen los primeros entregables de una estrategia a largo plazo
denominada "Indigo" (por su nombre código al interior de Microsoft). La estrategia involucra la
implementación de la versión 1.2 de SOAP y de las especificaciones conocidas como WS-*. Las
cuales se encargaran de darle la seguridad, confiabilidad y demás requisitos de los sistemas basados
en Web Services. Algunas de las especificaciones son:
WS-Routing WS-Coordination
WS-Attachments WS-Transaction
WS-Security WS-Trust
WS-Inspection WS-SecureConversation
WS-Referral WS-Policy
WS-SecurityPolicy WS-PolicyAssertions
WS-PolicyAttachment WS-ReliableMessaging
Estas especificaciones son manejadas por la organización WS-I. De esta hace parte Mi-crosoft y una
multitud de fabricantes lideres en la industria. Esto demuestra el compro-miso por la construcción
de tecnologías completamente interoperables, basadas en es-tándares.
Estas especificaciones son manejadas por la organización WS-I. De esta hace parte Microsoft y una
multitud de fabricantes lideres en la industria. Esto demuestra el compromiso por la construcción de
tecnologías completamente interoperables, basadas en estándares.
http://www.ws-i.org
http://msdn.microsoft.com/webservices/
Conclusiones
Considere desde ya una arquitectura basada en servicios, para manejar la complejidad y la constante
mejora de los sistemas actuales y futuros al interior de su empresa.
Tal como vimos, los servicios construidos como Web Services sin estado, son la mejor alternativa
disponible para construir una arquitectura altamente escalable. Aprovechan-do todas las ventajas
que trae SOA. Además son basados completamente en XML, ase-gurando su interoperabilidad.
Involucre desde ya tecnologías como Web Services y WSE 2.0, con la seguridad de no perder su
inversión de tiempo y esfuerzo. Así, una vez contemos con Indigo y Whidbey (la siguiente versión
de la suite de desarrollo de Microsoft), habrá todo el soporte res-tante durante el diseño y desarrollo,
para construir soluciones empresariales orientadas a servicios.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwebsrv/html/wsoverview.asp
Web Services Developer Center
http://msdn.microsoft.com/webservices/
http://msdn.microsoft.com/architecture/
http://www.microsoft.com/resources/practices/
http://www.microsoft.com/usa/webcasts/ondemand/892.asp