Both sides previous revisionPrevious revisionNext revision | Previous revision |
wiki:arquitectura_basada_en_componentes_ossgi [2024/11/11 13:55] – admin | wiki:arquitectura_basada_en_componentes_ossgi [2024/11/11 13:57] (current) – admin |
---|
La capa de ciclo de vida cumple dos propósitos diferentes. Externamente a tu aplicación, la capa de ciclo de vida define con precisión las operaciones del ciclo de vida del *bundle* (por ejemplo, instalar, actualizar, iniciar, detener y desinstalar). Estas operaciones del ciclo de vida permiten administrar, gestionar y hacer evolucionar tu aplicación de manera bien definida. Esto significa que los *bundles* pueden ser agregados y eliminados del marco de manera segura sin necesidad de reiniciar el proceso de la aplicación. Internamente a tu aplicación, la capa de ciclo de vida define cómo los *bundles* acceden a su contexto de ejecución, lo que les proporciona una forma de interactuar con el marco OSGi y las facilidades que este proporciona durante la ejecución. Este enfoque general de la capa de ciclo de vida es poderoso, ya que permite crear aplicaciones gestionadas externamente (y de forma remota) o aplicaciones completamente autogestionadas (o cualquier combinación de ambas). | La capa de ciclo de vida cumple dos propósitos diferentes. Externamente a tu aplicación, la capa de ciclo de vida define con precisión las operaciones del ciclo de vida del *bundle* (por ejemplo, instalar, actualizar, iniciar, detener y desinstalar). Estas operaciones del ciclo de vida permiten administrar, gestionar y hacer evolucionar tu aplicación de manera bien definida. Esto significa que los *bundles* pueden ser agregados y eliminados del marco de manera segura sin necesidad de reiniciar el proceso de la aplicación. Internamente a tu aplicación, la capa de ciclo de vida define cómo los *bundles* acceden a su contexto de ejecución, lo que les proporciona una forma de interactuar con el marco OSGi y las facilidades que este proporciona durante la ejecución. Este enfoque general de la capa de ciclo de vida es poderoso, ya que permite crear aplicaciones gestionadas externamente (y de forma remota) o aplicaciones completamente autogestionadas (o cualquier combinación de ambas). |
| |
| ===== Capa de Servicio ===== |
==== Capa de Servicio ==== | |
| |
La capa de servicios soporta y promueve un modelo de programación de aplicaciones flexible que incorpora conceptos popularizados por la computación orientada a servicios (aunque estos conceptos formaban parte del marco OSGi antes de que SOA se hiciera popular). Los conceptos principales giran en torno al patrón de interacción orientado a servicios de publicar, buscar y enlazar: los proveedores de servicios publican sus servicios en un registro de servicios, mientras que los clientes de servicios buscan en el registro para encontrar los servicios disponibles que desean usar (ver Figura anterior). Hoy en día, SOA está en gran medida asociado con los servicios web, pero los servicios OSGi son locales a una sola máquina virtual (VM), razón por la cual algunas personas lo denominan "SOA en una VM". | La capa de servicios soporta y promueve un modelo de programación de aplicaciones flexible que incorpora conceptos popularizados por la computación orientada a servicios (aunque estos conceptos formaban parte del marco OSGi antes de que SOA se hiciera popular). Los conceptos principales giran en torno al patrón de interacción orientado a servicios de publicar, buscar y enlazar: los proveedores de servicios publican sus servicios en un registro de servicios, mientras que los clientes de servicios buscan en el registro para encontrar los servicios disponibles que desean usar (ver Figura anterior). Hoy en día, SOA está en gran medida asociado con los servicios web, pero los servicios OSGi son locales a una sola máquina virtual (VM), razón por la cual algunas personas lo denominan "SOA en una VM". |
La capa de servicios de OSGi es muy intuitiva, ya que promueve un enfoque de desarrollo basado en interfaces, lo cual generalmente se considera una buena práctica. Específicamente, promueve la separación entre interfaz e implementación. Los servicios OSGi son simplemente interfaces Java que representan un contrato conceptual entre los proveedores de servicios y los clientes de servicios. Esto hace que la capa de servicios sea muy ligera, ya que los proveedores de servicios son simplemente objetos Java a los que se accede mediante invocación directa de métodos. Además, la capa de servicios amplía el dinamismo basado en *bundles* de la capa de ciclo de vida con dinamismo basado en servicios, es decir, los servicios pueden aparecer o desaparecer en cualquier momento. El resultado es un modelo de programación que evita los enfoques monolíticos y frágiles del pasado, a favor de ser modular y flexible. | La capa de servicios de OSGi es muy intuitiva, ya que promueve un enfoque de desarrollo basado en interfaces, lo cual generalmente se considera una buena práctica. Específicamente, promueve la separación entre interfaz e implementación. Los servicios OSGi son simplemente interfaces Java que representan un contrato conceptual entre los proveedores de servicios y los clientes de servicios. Esto hace que la capa de servicios sea muy ligera, ya que los proveedores de servicios son simplemente objetos Java a los que se accede mediante invocación directa de métodos. Además, la capa de servicios amplía el dinamismo basado en *bundles* de la capa de ciclo de vida con dinamismo basado en servicios, es decir, los servicios pueden aparecer o desaparecer en cualquier momento. El resultado es un modelo de programación que evita los enfoques monolíticos y frágiles del pasado, a favor de ser modular y flexible. |
| |
Ciertamente, todo esto suena bien, pero aún podrías estar preguntándote cómo encajan estas tres capas entre sí y cómo usarlas para crear una aplicación sobre ellas. Es comprensible, en las próximas secciones exploraremos cómo estas capas encajan utilizando algunos programas de ejemplo pequeños. | Como proyecto de ejemplo ver el siguiente repositorio: [[https://github.com/IS-LAB-EIC-UCN/osgi-tutorial]] |
| |