La programación orientada a servicios (SOP) es un paradigma de programación que utiliza "servicios" como la unidad de trabajo de la computadora, para diseñar e implementar aplicaciones comerciales integradas y programas de software de misión crítica . Los servicios pueden representar los pasos de los procesos comerciales y, por lo tanto, una de las principales aplicaciones de este paradigma es la entrega rentable de aplicaciones comerciales compuestas o independientes que pueden "integrarse desde adentro hacia afuera".
Introducción
SOP promueve inherentemente la arquitectura orientada a servicios (SOA), sin embargo, no es lo mismo que SOA. Mientras que SOA se centra en la comunicación entre sistemas que utilizan "servicios", SOP proporciona una nueva técnica para crear módulos de aplicaciones ágiles utilizando servicios en memoria como unidad de trabajo.
Un servicio en memoria en SOP se puede externalizar de forma transparente como una operación de servicio web . Debido a los estándares de servicios web independientes del lenguaje y la plataforma, SOP abarca todos los paradigmas, lenguajes y plataformas de programación existentes. En SOP, el diseño de los programas gira en torno a la semántica de las llamadas de servicio, el enrutamiento lógico y la descripción del flujo de datos a través de interfaces de servicio bien definidas. Todos los módulos del programa SOP están encapsulados como servicios y un servicio puede estar compuesto por otros servicios anidados de manera jerárquica con una profundidad prácticamente ilimitada en esta jerarquía de pila de servicios. Un servicio compuesto también puede contener construcciones de programación, algunas de las cuales son específicas y exclusivas de SOP. Un servicio puede ser un componente externo de otro sistema al que se accede mediante el uso de estándares de servicio web o cualquier API patentada a través de un mecanismo de complemento en memoria.
Si bien SOP admite las construcciones de programación básicas para secuenciación, selección e iteración, se diferencia con una gran cantidad de nuevas construcciones de programación que brindan una capacidad nativa incorporada orientada a la manipulación de listas de datos , integración de datos , multiproceso automatizado de módulos de servicio, administración de contexto declarativo y sincronización de servicios. El diseño de SOP permite a los programadores sincronizar semánticamente la ejecución de servicios para garantizar que sea correcta, o declarar un módulo de servicio como un límite de transacción con comportamiento automatizado de compromiso / retroceso.
Se pueden construir herramientas de diseño semántico y plataformas de automatización en tiempo de ejecución para respaldar los conceptos fundamentales de SOP. Por ejemplo, una máquina virtual de servicio (SVM) que crea automáticamente objetos de servicio como unidades de trabajo y administra su contexto puede diseñarse para ejecutarse en función de los metadatos del programa SOP almacenados en XML y creados por una herramienta de automatización en tiempo de diseño. En términos de SOA, SVM es tanto un productor de servicios como un consumidor de servicios.
Conceptos fundamentales
Los conceptos de SOP proporcionan una base sólida para un enfoque semántico de la integración de la programación y la lógica de la aplicación. Hay tres beneficios importantes de este enfoque:
- Semánticamente, puede aumentar el nivel de abstracción para crear aplicaciones comerciales compuestas y, por lo tanto, aumentar significativamente la capacidad de respuesta al cambio (es decir, la agilidad comercial ).
- Da lugar a la unificación de las técnicas de integración y desarrollo de componentes de software bajo un solo concepto y por lo tanto reduce significativamente la complejidad de la integración. Este enfoque unificado permite la "integración de adentro hacia afuera" sin la necesidad de replicar datos, por lo tanto, reduce significativamente el costo y la complejidad de la solución general.
- Automatice la virtualización y el subproceso múltiple de aplicaciones a nivel granular (unidad de trabajo).
Los siguientes son algunos de los conceptos clave de SOP:
Encapsulamiento
En SOP, los módulos de software en memoria están estrictamente encapsulados a través de interfaces de servicio bien definidas que se pueden externalizar bajo demanda como operaciones de servicios web. Esta unidad mínima de encapsulación maximiza las oportunidades de reutilización dentro de otros módulos de servicio en memoria, así como en los activos de software existentes y heredados . Mediante el uso de interfaces de servicio para ocultar información , SOP amplía los principios de diseño orientados a servicios utilizados en SOA para lograr la separación de preocupaciones en los módulos de servicio en memoria.
Interfaz de servicio
Una interfaz de servicio en SOP es un objeto en memoria que describe una tarea de software bien definida con estructuras de datos de entrada y salida bien definidas . Las interfaces de servicio se pueden agrupar en paquetes. Una interfaz de servicio SOP se puede externalizar como una operación WSDL y se puede describir un servicio único o un paquete de servicios utilizando WSDL. Además, las interfaces de servicio se pueden asignar a uno o varios grupos de servicios según las propiedades compartidas.
En SOP, las propiedades de tiempo de ejecución almacenadas en los metadatos de la interfaz de servicio sirven como un contrato con la máquina virtual de servicio (SVM). Un ejemplo del uso de propiedades en tiempo de ejecución es el de la sincronización declarativa de servicios . Una interfaz de servicio se puede declarar como una interfaz totalmente sincronizada, lo que significa que solo se puede ejecutar una única instancia de ese servicio en un momento dado. O puede sincronizarse en función del valor real de las entradas clave en tiempo de ejecución, lo que significa que no se pueden ejecutar al mismo tiempo dos instancias de servicio de ese servicio con el mismo valor para sus datos de entrada clave. Además, la sincronización se puede declarar entre interfaces de servicios que pertenecen al mismo grupo de servicios. Por ejemplo, si dos servicios, "CreditAccount" y "DebitAccount", pertenecen al mismo grupo de servicios de sincronización y están sincronizados en el campo de entrada accountName, no se pueden ejecutar dos instancias de "CreditAccount" y "DebitAccount" con el mismo nombre de cuenta. al mismo tiempo.
Invocador de servicio
Un invocador de servicios realiza solicitudes de servicio. Es una interfaz en memoria conectable que abstrae la ubicación de un productor de servicios, así como el protocolo de comunicación, utilizado entre el consumidor y el productor cuando se pasa por la memoria de la computadora, desde el entorno de ejecución de SOP, como una SVM. El productor puede estar en proceso (es decir, en memoria), fuera del proceso en la misma máquina servidor o virtualizado en un conjunto de máquinas servidor en red. El uso de un invocador de servicios en SOP es la clave para la transparencia y virtualización de la ubicación . Otra característica importante de la capa de invocador de servicios es la capacidad de optimizar el ancho de banda y el rendimiento al comunicarse entre máquinas. Por ejemplo, un "invocador de SOAP" es el invocador de servicio predeterminado para la comunicación remota entre máquinas que utilizan los estándares de servicios web . Este invocador puede intercambiarse dinámicamente si, por ejemplo, el productor y el consumidor desean comunicarse a través de una API patentada empaquetada para una mejor seguridad y un uso más eficiente del ancho de banda.
Oyente de servicio
Un oyente de servicio recibe solicitudes de servicio. Es una interfaz en memoria conectable que abstrae el protocolo de comunicación para las solicitudes de servicio entrantes realizadas al entorno de tiempo de ejecución de SOP, como el SVM. A través de esta capa abstracta, el entorno de ejecución de SOP puede integrarse virtualmente en la dirección de memoria de cualquier entorno de programación o servicio de aplicación tradicional.
Implementación de servicios
En SOP, un módulo de servicio se puede implementar como servicio compuesto o atómico. Es importante tener en cuenta que los módulos de servicio construidos a través del paradigma SOP tienen una naturaleza extrovertida y se pueden externalizar de forma transparente a través de estándares como SOAP o cualquier protocolo propietario.
Enfoque de base semántica
Una de las características más importantes de SOP es que puede soportar un enfoque de programación completamente basado en la semántica. Además, este enfoque semántico se puede colocar en capas en un entorno visual construido sobre una capa totalmente basada en metadatos para almacenar la interfaz de servicio y las definiciones del módulo de servicio. Además, si el tiempo de ejecución de SOP es compatible con un SVM capaz de interpretar la capa de metadatos, se puede eliminar la necesidad de generar código automáticamente. El resultado es una enorme ganancia de productividad durante el desarrollo, facilidad de prueba y una agilidad significativa en la implementación.
Implementación del servicio: servicio compuesto
Una implementación de servicio compuesto es la definición semántica de un módulo de servicio basado en técnicas y conceptos de SOP. Si observa el interior de una definición de interfaz en caja negra de un servicio compuesto, es posible que vea otras interfaces de servicio conectadas entre sí y conectadas a construcciones de programación SOP. Un servicio compuesto tiene una definición recursiva que significa que cualquier servicio interno ("servicio interno") puede ser otro servicio atómico o compuesto. Un servicio interno puede ser una referencia recursiva al mismo servicio compuesto que lo contiene.
Construcciones de programación
SOP admite las construcciones de programación básicas para la secuenciación, la selección y la iteración, así como el comportamiento avanzado integrado. Además, SOP admite construcciones semánticas para el mapeo , traducción, manipulación y flujo de datos automáticos a través de los servicios internos de un servicio compuesto.
Secuenciación
Un servicio dentro de la definición de un servicio compuesto (un "servicio interno") se secuencia implícitamente a través de la conectividad semántica de los puertos de éxito o falla integrados de otros servicios internos con su puerto de activación integrado. Cuando un servicio interno se ejecuta correctamente, todos los servicios internos conectados a su puerto de éxito se ejecutarán a continuación. Si un servicio interno falla, todos los servicios conectados a su puerto de falla se ejecutarán a continuación.
Selección
La selección lógica se logra a través de construcciones de ramificación impulsadas por datos y otras construcciones configurables. En general, las construcciones configurables son servicios integrados en la plataforma SOP con entradas y salidas que pueden asumir la forma de entrada / salida de otros servicios conectados. Por ejemplo, una construcción configurable utilizada para filtrar datos de salida de servicios puede tomar una lista de Órdenes de venta, Órdenes de compra o cualquier otra estructura de datos, y filtrar sus datos según las propiedades de filtro declaradas por el usuario almacenadas en la interfaz de esa instancia de la construcción de filtro. . En este ejemplo, la estructura a filtrar se convierte en la entrada de la instancia particular de la construcción de filtro y la misma estructura que representa los datos filtrados se convierte en la salida de la construcción configurable.
Iteración
Un servicio compuesto puede declararse en bucle. El bucle puede estar limitado por un número fijo de iteraciones con un retardo incorporado opcional entre iteraciones y puede terminar dinámicamente usando una construcción de "salida de servicio con éxito" o "salida de servicio con falla" dentro del servicio compuesto de bucle. Además, cualquier interfaz de servicio puede ejecutarse automáticamente en un modo de bucle o " foreach ", si se suministra con dos o más componentes de entrada después de la preparación automática. Este comportamiento se admite en tiempo de diseño cuando una estructura de lista de datos de un servicio está conectada a un servicio que toma una estructura de datos única (es decir, no plural) como entrada. Si se declara que una propiedad de tiempo de ejecución de la interfaz de servicio compuesta es compatible con "foreach" en paralelo, entonces el entorno de automatización de tiempo de ejecución puede realizar múltiples subprocesos automáticamente en el bucle y ejecutarlo en paralelo. Este es un ejemplo de cómo las construcciones de programación SOP proporcionan una funcionalidad avanzada incorporada.
Transformación, mapeo y traducción de datos
Las construcciones de mapeo , traducción y transformación de datos permiten la transferencia automática de datos a través de servicios internos. Un servicio interno está preparado para ejecutarse, cuando se activa y se resuelven todas sus dependencias de entrada. Todos los servicios internos preparados dentro de un servicio compuesto se ejecutan en una ráfaga paralela denominada "hiperciclo". Este es uno de los medios por los que se admite el procesamiento paralelo automático en SOP. La definición de un servicio compuesto contiene un gráfico dirigido implícito de dependencias internas del servicio. El entorno de ejecución de SOP puede crear un gráfico de ejecución basado en este gráfico dirigido creando instancias y ejecutando servicios internos en paralelo siempre que sea posible.
Manejo de excepciones
El manejo de excepciones es un error en tiempo de ejecución en Java. El manejo de excepciones en SOP se logra simplemente conectando el puerto de falla de los servicios internos a otro servicio interno, o a una construcción de programación. Las construcciones "Exit with failure" y "exit with success" son ejemplos de construcciones utilizadas para el manejo de excepciones. Si no se toma ninguna acción en el puerto de falla de un servicio, entonces el servicio externo (principal) fallará automáticamente y los mensajes de salida estándar del servicio interno fallado aparecerán automáticamente en la salida estándar del principal.
Límite transaccional
Un servicio compuesto se puede declarar como límite de transacción . El entorno de ejecución de SOP crea y gestiona automáticamente un contexto jerárquico para objetos de servicio compuestos que se utilizan como límite de transacción. Este contexto se compromete o retrocede automáticamente tras la ejecución exitosa del servicio compuesto.
Compensación de servicio
Los servicios compuestos especiales, llamados servicios de compensación, pueden asociarse con cualquier servicio dentro de SOP. Cuando un servicio compuesto que se declara como límite de transacción falla sin una excepción que maneja el enrutamiento, el entorno de ejecución de SOP envía automáticamente los servicios de compensación asociados con todos los servicios internos que ya se han ejecutado con éxito.
Implementación del servicio: servicio atómico
Un servicio atómico es una extensión en memoria del entorno de ejecución de SOP a través de una interfaz nativa de servicio (SNI); es esencialmente un mecanismo de complemento. Por ejemplo, si SOP se automatiza a través de una SVM , un complemento de servicio se carga dinámicamente en la SVM cuando se consume cualquier servicio asociado. Un ejemplo de un complemento de servicio sería un complemento de comunicador SOAP que puede traducir sobre la marcha cualquier dato de entrada de servicio en memoria a una solicitud SOAP de servicio web, publicarlo en un productor de servicios y luego traducir el correspondiente Respuesta SOAP a los datos de salida en memoria del servicio. Otro ejemplo de un complemento de servicio es un complemento SQL de base de datos estándar que admite operaciones de consulta, modificación y acceso a datos. Otro ejemplo que puede ayudar a establecer la importancia fundamental de los servicios atómicos y los complementos de servicio es el uso de un invocador de servicio como complemento de servicio para virtualizar de manera transparente los servicios en diferentes instancias de una plataforma SOP. Esta virtualización única a nivel de componentes se denomina "virtualización de la red de servicios" para distinguirla de la virtualización a nivel de procesos o aplicación tradicional .
Preocupaciones transversales
SOP presenta oportunidades significativas para respaldar preocupaciones transversales para todas las aplicaciones creadas utilizando la técnica SOP. Las siguientes secciones definen algunas de estas oportunidades:
Instrumentación de servicio
El entorno de ejecución de SOP puede proporcionar sistemáticamente perfiles, registros y medición integrados y optimizados para todos los servicios en tiempo real.
Almacenamiento en caché de servicio declarativo y sensible al contexto
Según los valores de entrada clave declarados de una instancia de servicio, el entorno de ejecución de SOP puede almacenar en caché las salidas de un servicio interno no sensible al tiempo cuando se ejecuta en el contexto de un servicio compuesto en particular. Cuando un servicio se almacena en caché para valores de entrada de clave particulares, el entorno de ejecución de SOP obtiene las salidas en caché correspondientes a las entradas con clave de su caché de servicio en lugar de consumir el servicio. La disponibilidad de este mecanismo integrado para el desarrollador de aplicaciones SOP puede reducir significativamente la carga en los sistemas back-end.
Disparadores de servicio
SOP proporciona un mecanismo para asociar un tipo especial de servicio compuesto, servicio de activación, a cualquier otro servicio. Cuando se consume ese servicio, la plataforma SOP crea y consume automáticamente una instancia del servicio de activación asociado con una copia en memoria de las entradas del servicio de activación. Este consumo no es intrusivo para la ejecución del servicio de activación. Se puede declarar que un activador de servicio se ejecuta tras la activación, falla o finalización exitosa del servicio de activación.
Comunicación interservicios
Además de la capacidad de llamar a cualquier servicio, los eventos de solicitud de servicio y la memoria compartida son dos de los mecanismos integrados de SOP que se proporcionan para la comunicación entre servicios. El consumo de un servicio se trata como un Evento en SOP. SOP proporciona un mecanismo de eventos basado en correlación que da como resultado la preferencia de un compuesto en ejecución que ha declarado, a través de una construcción de "espera", la necesidad de esperar a que sucedan uno o más eventos de consumo de servicios con valores de datos de entrada especificados. La ejecución del servicio compuesto continúa cuando los servicios se consumen con entradas clave de correlación específicas asociadas con la construcción de espera. SOP también proporciona un espacio de memoria compartida con control de acceso donde los servicios pueden acceder y actualizar una estructura de datos bien definida que es similar a la estructura de entrada / salida de los servicios. Se puede acceder mediante programación al mecanismo de memoria compartida dentro de SOP a través de interfaces de servicio.
Anulaciones de servicio
En SOP, las personalizaciones se gestionan a través de una característica inventiva llamada Anulaciones de servicio. A través de esta función, una implementación de servicio puede ser anulada estática o dinámicamente por una de las muchas implementaciones posibles en tiempo de ejecución. Esta característica es análoga al polimorfismo en la programación orientada a objetos . Cada posible implementación de invalidación se puede asociar a una o más carteras de configuración de invalidación para administrar la activación de grupos de invalidaciones relacionadas en diferentes instalaciones de aplicaciones SOP en el momento de la implementación .
Aprovisionamiento de cuentas de consumidores
Los servicios seleccionados se pueden implementar de forma segura para el consumo programático externo mediante una capa de presentación ( GUI ) u otras aplicaciones. Una vez que se definen las cuentas de servicio, el entorno de ejecución de SOP administra automáticamente el acceso a través de mecanismos de aprovisionamiento de cuentas de consumidores .
Seguridad
El entorno de ejecución de SOP puede proporcionar de forma sistemática autenticación y autorización de servicio integradas . A los efectos de la autorización, los proyectos de desarrollo de SOP, las cuentas de los consumidores, los paquetes y los servicios se tratan como recursos con control de acceso. De esta forma, el entorno de ejecución de SOP puede proporcionar autorización integrada. Los estándares o la autorización patentada y la seguridad de las comunicaciones se personalizan a través de anulaciones de servicios, módulos de invocador de complementos y de escucha de servicios.
Virtualización y multiproceso automático
Dado que todos los artefactos de SOP son servicios bien encapsulados y todos los mecanismos de SOP, como la memoria compartida, se pueden proporcionar como servicios distribuibles, el entorno de ejecución de SOP puede automatizar la virtualización a gran escala. Además, la pila de servicios jerárquica de un servicio compuesto con los múltiples gráficos de ejecución asociados a sus servicios internos, en cada nivel, brinda enormes oportunidades para el multihilo automatizado en el entorno de ejecución de SOP.
Historia
El término programación orientada a servicios fue publicado por primera vez en 2002 por Alberto Sillitti, Tullio Vernazza y Giancarlo Succi en un libro llamado "Reutilización de software: métodos, técnicas y herramientas". SOP, como se describió anteriormente, refleja algunos aspectos del uso del término propuesto por Sillitti, Vernazza y Succi.
Hoy en día, el paradigma SOP se encuentra en las primeras etapas de adopción generalizada. Hay cuatro impulsores del mercado que impulsan esta adopción:
- Arquitectura de procesador multinúcleo : debido a problemas de disipación de calor con velocidades de reloj del procesador en aumento por encima de 4 GHz, los principales proveedores de procesadores como Intel han recurrido a la arquitectura multinúcleo para ofrecer un rendimiento cada vez mayor. Consulte el artículo "El almuerzo gratuito ha terminado " Este cambio en el diseño obliga a un cambio en la forma en que desarrollamos nuestros módulos de software y aplicaciones: las aplicaciones deben estar escritas para la concurrencia para poder utilizar procesadores de múltiples núcleos y escribir programas concurrentes es un desafío tarea. SOP ofrece una oportunidad incorporada para el multihilo automatizado .
- Virtualización de aplicaciones : SOP promueve el microcontrol integrado sobre la transparencia de la ubicación de los componentes del servicio de cualquier módulo de servicio. Esto da como resultado la virtualización automática y granular de los componentes de la aplicación (en comparación con un proceso de aplicación completo) en un clúster o cuadrícula de plataformas de tiempo de ejecución SOP.
- Arquitectura orientada a servicios (SOA) y demanda de aplicaciones integradas y compuestas: al principio, la adopción de SOP seguirá la curva de adopción de SOA con un pequeño retraso. Esto se debe a que los servicios generados a través de SOA se pueden ensamblar y consumir fácilmente a través de SOP. Cuanto más proliferan los servicios web, más sentido tiene aprovechar la naturaleza semántica de SOP. Por otro lado, dado que SOA es inherente a SOP, SOP proporciona una forma rentable de entregar SOA a los mercados principales.
- Software como servicio (SaaS): las capacidades de las plataformas SaaS actuales no pueden abordar las complejidades de personalización e integración que requieren las grandes empresas. SOP puede reducir significativamente la complejidad de la integración y la personalización. Esto llevará a SOP a las plataformas SaaS de próxima generación.
Ver también
- Microservicios
enlaces externos
- http://nextaxiom.com
- DOI.org "Programación orientada a servicios: un nuevo paradigma de reutilización de software"
- https://web.archive.org/web/20090505205415/http://blog.itaniumsolutions.org/2008/01/
- http://in.sys-con.com/node/467329