El contrato de servicio estandarizado es un principio de diseño de software [ 1 ] aplicado dentro del paradigma de diseño orientado a servicios para garantizar que los contratos de servicio [ 2 ] dentro de un inventario de servicios [ 3 ] (empresa o dominio) se adhieran al mismo conjunto de estándares de diseño. [ 4 ] Esto facilita la estandarización de los contratos de servicio en todo el inventario de servicios. [ 5 ]
Objetivo
La agilidad que promete una arquitectura orientada a servicios (SOA) se suele medir en función del nivel de reutilización de sus servicios. Sin embargo, esta reutilización está directamente relacionada con la forma en que el contrato de servicio define sus capacidades. Un servicio construido sobre un contexto funcional potencialmente reutilizable [ 6 ] , pero con un contrato que no refleja correctamente esta reutilización, no alcanza su potencial.
En las soluciones orientadas a servicios, un contrato de servicio constituye un elemento fundamental, ya que es el único medio a través del cual los servicios interactúan entre sí o con otros programas de consumo. Esto genera una necesidad imperiosa de estandarizar los contratos de servicio para que estos sean lo más reutilizables y recomponibles posible. Para lograrlo, es necesario aplicar el principio de diseño de contratos de servicio estandarizados, cuya aplicación da como resultado contratos de servicio estandarizados basados en estándares de diseño [ 7 ] establecidos en un inventario de servicios.
Uno de sus objetivos es reducir la necesidad de transformaciones de datos cuando dos servicios interactúan entre sí, lo cual se puede lograr si los contratos de servicio utilizan modelos de datos estandarizados, por ejemplo, esquemas XML si los servicios se han implementado como servicios web . Esto también contribuye a que los servicios sean más interoperables. Otro objetivo importante de este patrón de diseño es utilizar una forma estandarizada de expresar las capacidades del servicio para que su propósito y capacidad se comprendan fácilmente en la fase de diseño. [ 8 ]
Solicitud
Un contrato de servicio técnico [ 9 ] generalmente se compone de un documento WSDL , uno o más esquemas XML y uno o más documentos de política. En consecuencia, este principio debe aplicarse en tres áreas de un contrato de servicio, como se describe a continuación:
Estandarización de la expresión funcional
Es necesario definir las operaciones del servicio mediante convenciones de nomenclatura estandarizadas. Esto también se aplica a los nombres de los mensajes de entrada y salida, así como a sus nombres de tipo correspondientes. Esto facilita la correcta interpretación del contrato de servicio, lo que a su vez aumenta la reutilización y la interoperabilidad del servicio. Cuando los contratos de servicio expresan claramente sus capacidades, se reduce la probabilidad de duplicación de servicios.
Estandarización del modelo de datos
Dos servicios que intercambian mensajes basados en el mismo tipo de datos (por ejemplo, una orden de compra) podrían modelar esos datos según esquemas diferentes, lo que requiere una transformación del modelo de datos. Esto, sin duda, añade sobrecarga y dificulta la interoperabilidad y la reutilización de los servicios. Para evitar esta transformación, el principio de contrato de servicio estandarizado requiere modelos de datos estandarizados, lo que a su vez ayuda a crear una arquitectura de representación de datos estandarizada que puede reutilizarse en toda la empresa para definir capacidades de servicio estandarizadas. La centralización de esquemas respalda directamente los objetivos del patrón de diseño de estandarización de modelos de datos [ 10 ] , que además facilita la creación de esquemas gobernados centralmente.
Estandarización de políticas
Las políticas de servicio representan los términos de uso de un servicio. Por lo tanto, para que un servicio sea reutilizable, sus requisitos de comportamiento deben expresarse de forma coherente mediante expresiones de política estandarizadas basadas en vocabularios estándar del sector. Este tipo de estandarización fomenta la separación de las políticas de los contratos de servicio en documentos de política individuales, lo que facilita la gobernanza centralizada. En algunos casos, dos políticas, aunque sintácticamente diferentes, pueden significar lo mismo; por consiguiente, los estándares de diseño deben dictar la estructura aceptable de las políticas.
Consideraciones
La aplicación de este principio de diseño depende de los estándares de diseño a nivel de inventario de servicios. Esto requiere recursos adicionales, en términos de tiempo y esfuerzo. En segundo lugar, para aplicar este principio de diseño de manera efectiva, el contrato real debe estar físicamente aislado de la lógica e implementación del servicio para que pueda basarse en estándares de la industria. Esto se puede lograr mediante la aplicación de un patrón de diseño de contrato desacoplado [ 11 ] . Además, es necesario seguir el enfoque de "contrato primero" para que la lógica subyacente solo utilice modelos de datos estandarizados. Asimismo, el requisito de modelos de datos centralizados puede resultar en la transmisión de datos redundantes entre servicios, ya que los datos reales que un servicio necesita pueden ser solo un subconjunto de los datos definidos en el esquema estandarizado impuesto al servicio.
Referencias
- ↑ "Principio de diseño" . Archivado del original el 29 de abril de 2010. Consultado el 7 de marzo de 2010 .
- ↑ "Contratos de servicio" . Archivado del original el 1 de mayo de 2012. Consultado el 9 de marzo de 2010 .
- ↑ "Inventario de servicios" . Archivado del original el 13 de marzo de 2010. Consultado el 9 de marzo de 2010 .
- ↑ Cellary, Wojciech; Strykowski, Sergiusz. «Gobierno electrónico basado en computación en la nube y arquitectura orientada a servicios». Actas de la 3.ª conferencia internacional sobre teoría y práctica de la gobernanza electrónica . ICEGOV '09. págs. 5-10 . doi : 10.1145/1693042.1693045 . ISBN 978-1-60558-663-2.
- ↑ Michael Poulin. Evolución de los principios de la orientación al servicio: Contrato de servicio, parte 2. Archivado el 29 de septiembre de 2011 en Wayback Machine . Fecha de acceso: 12 de abril de 2010.
- ↑ El límite del servicio, es decir, el tipo de funciones que proporciona el servicio.
- ↑ Tost. et al. Directrices para el uso de tecnologías de contratos de servicios web Archivado el 3 de octubre de 2012 en Wayback Machine . Fecha de acceso: 12 de abril de 2010.
- ↑ kou-Kai Lin. Un estudio preliminar sobre la migración orientada a servicios para una migración a pequeña escala. Archivado el 15 de agosto de 2011 en Wayback Machine . Fecha de acceso: 10 de abril de 2010.
- ↑ Dado que los servicios suelen implementarse como servicios web, este artículo se centra en la aplicación de este principio de diseño en el contexto de los servicios web.
- ↑ "Patrón de centralización de esquemas" . Archivado del original el 11 de febrero de 2010. Consultado el 18 de febrero de 2010 .
- ↑ "Patrón de contrato desacoplado" . Archivado del original el 13 de febrero de 2010. Consultado el 18 de febrero de 2010 .
- Mauro, et al. Integración de dispositivos orientada a servicios: un análisis de patrones de diseño SOA. , págs. 1–10, 43.ª Conferencia Internacional de Hawái sobre Ciencias de Sistemas, 2010. Fecha de acceso: 8 de abril de 2010.
- Erl, Thomas (2008). Principios SOA del diseño de servicios . Prentice Hall. ISBN 978-0-13-234482-1.
- Paul-Alexandru Istoan. Líneas de productos de software y arquitecturas orientadas a servicios: ¿se pueden conectar ? Fecha de acceso: 10 de abril de 2010.
- Youssef Achbany. Un marco multiagente para el desarrollo de sistemas de servicios adaptables y abiertos . Fecha de acceso: 10 de abril de 2010.
- Kjell-Sverre Jerijærvi. Modelo de madurez de contrato SOA . Fecha de acceso: 12 de abril de 2010.
Enlaces externos
- Conceptos de SOA
- Glosario de términos de SOA
- Orientado a servicios (informática empresarial)