La Especificación de Interfaz de Aplicación ( AIS ) [ 1 ] es una colección de especificaciones abiertas que definen las interfaces de programación de aplicaciones (API) para software de aplicaciones de alta disponibilidad. Es desarrollada y publicada por el Foro de Disponibilidad de Servicios (SA Forum) y está disponible gratuitamente. Además de reducir la complejidad de las aplicaciones de alta disponibilidad y acortar el tiempo de desarrollo, las especificaciones buscan facilitar la portabilidad de las aplicaciones entre diferentes implementaciones de middleware y permitir la participación de desarrolladores externos en un campo que en el pasado era altamente propietario.
Historia
El AIS forma parte de las Interfaces de Disponibilidad de Servicios (SAI) del Foro SA. Las especificaciones originales, publicadas el 14 de abril de 2003, incluían el Marco de Gestión de Disponibilidad (AMF), el Servicio de Membresía de Clúster (CLM) y otros cuatro servicios de utilidad (Punto de Control, Evento, Mensaje y Bloqueo).
En versiones posteriores se añadieron servicios adicionales.
- La versión 3 (18 de enero de 2006) añadió el primer conjunto de servicios de gestión: Registro, Notificación y Gestión del Modelo de Información (IMM).
- La versión 4 (27 de febrero de 2007) amplió los servicios de utilidad con funciones de temporizador y asignación de nombres.
- La versión 5 (16 de octubre de 2007) amplió los servicios de administración con funciones de seguridad y añadió el marco de administración de software.
- La versión 6 (21 de octubre de 2008) añadió el Servicio de Gestión de Plataforma para cerrar la brecha entre AIS y HPI ( Interfaz de Plataforma de Hardware ).
AIS consta de 12 servicios y dos marcos de trabajo. Los servicios se clasifican en tres grupos funcionales: servicios de plataforma AIS, servicios básicos de gestión AIS y servicios generales de utilidad AIS, además de los marcos de trabajo AIS.
Inicialmente, las API estaban definidas únicamente en el lenguaje de programación C , pero desde julio de 2008, la asignación a Java de las diferentes API de servicio se está publicando de forma incremental.
dependencias de servicio
Los distintos servicios y marcos de las especificaciones de la interfaz se han diseñado para ser modulares y, hasta cierto punto, independientes entre sí. Esto permite que exista un sistema que proporcione únicamente AIS y no HPI, y viceversa.
La única dependencia arquitectónica requerida es la dependencia del Servicio de Membresía de Clúster (CLM). Todos los Servicios AIS, con la excepción del Servicio de Administración de Plataforma (PLM) y el Servicio de Temporizador (TMR), dependen de CLM.
Se espera que todos los servicios AIS utilicen los servicios de administración AIS para exponer sus interfaces administrativas, configuración e información de administración en tiempo de ejecución (fig. 2).
Servicios de plataforma
El Servicio de Gestión de Plataforma (PLM) proporciona una vista lógica del hardware y del software de bajo nivel del sistema. El software de bajo nivel, en este contexto, comprende el sistema operativo y las capas de virtualización que proporcionan entornos de ejecución para todo tipo de software.
Las principales entidades lógicas implementadas por PLM son :
- Elemento de hardware (HE) : Un elemento de hardware es una entidad lógica que representa cualquier tipo de componente de hardware, como un chasis, un módulo de CPU o un dispositivo de E/S. Normalmente, todas las unidades reemplazables en campo (FRU) se modelan como elementos de hardware.
- Entorno de ejecución (EE) : Un entorno de ejecución es una entidad lógica que representa un entorno capaz de ejecutar programas de software. Por ejemplo, un servidor blade o una máquina SMP ejecuta una única instancia del sistema operativo, modelada como un entorno de ejecución. Se admiten diferentes arquitecturas de virtualización (fig. 4).
PLM mantiene el estado de estas entidades en el modelo de información y proporciona los medios para controlarlas y realizar un seguimiento de cualquier cambio de estado. Para llevar a cabo estas tareas en los HE, el servicio PLM suele utilizar HPI. En el caso de los EE, PLM se encarga de recuperar toda la información necesaria sobre el estado del sistema operativo y cualquier capa de virtualización disponible.
El Servicio de Membresía de Clúster (CLM) proporciona a las aplicaciones información sobre los nodos que se han configurado administrativamente en la configuración del clúster (estos nodos también se denominan nodos de clúster o nodos configurados) y es fundamental para cualquier sistema en clúster. Un clúster consta de este conjunto de nodos configurados, cada uno con un nombre de nodo único.
Las dos entidades lógicas implementadas por el Servicio de Membresía de Clúster son:
- Clúster : representa el clúster en sí y es el objeto padre de los objetos de nodo del clúster.
- Nodo de clúster : representa un nodo de clúster configurado.
El CLM proporciona API para recuperar la información actual sobre la membresía del clúster y para realizar un seguimiento de los cambios en la membresía (por ejemplo, la salida o la incorporación de un nodo). Todos los servicios AIS del clúster deben usar la API de seguimiento del CLM para determinar la membresía.
Servicios de administración
Las distintas entidades implementadas por los servicios AIS (por ejemplo, entornos de ejecución, puntos de control, componentes, etc.) se representan como objetos gestionados en el Modelo de Información (MI) del Foro SA, que puede considerarse una base de datos de gestión de configuración . Los objetos gestionados son instancias de clases de objetos definidas por la especificación del servicio AIS correspondiente, que define los atributos de clase y las operaciones administrativas. Las operaciones administrativas especificadas para las clases de objetos representan operaciones que pueden realizarse sobre las entidades representadas por los objetos, por ejemplo, bloquear una unidad de servicio o exportar el contenido del MI en formato XML. Los objetos en el MI se almacenan en una jerarquía de árbol donde un objeto puede tener, como máximo, un objeto padre y cualquier número de objetos hijos.
Las entidades lógicas representadas por los objetos en el IM no suelen ser implementadas por el propio servicio IMM; en su lugar, las aplicaciones de usuario y los servicios AIS, como el servicio Checkpoint o el marco de gestión de disponibilidad, proporcionan su implementación. Por lo tanto, se les denomina implementadores de objetos (OI). Para fines de gestión, todos los servicios AIS exponen sus entidades implementadas como objetos gestionados a través del servicio IMM.
En el IM existen dos categorías de objetos y atributos: de tiempo de ejecución y de configuración.
Los objetos y atributos en tiempo de ejecución reflejan el estado actual de las entidades que representan; son de naturaleza descriptiva .
En cambio, los objetos y atributos de configuración son prescriptivos, ya que para las aplicaciones de gestión (o gestores de objetos , OM) son el medio para proporcionar información a los implementadores de objetos sobre qué entidades necesitan implementar.
Los objetos de configuración pueden incluir atributos de configuración y de tiempo de ejecución, mientras que los objetos de tiempo de ejecución pueden incluir únicamente atributos de tiempo de ejecución. Se pueden definir operaciones administrativas en ambas categorías de objetos.
En consecuencia, el servicio IMM expone una interfaz de " enlace sur " (la API IMM-OI) a los implementadores de objetos y una interfaz de " enlace norte " (la API IMM-OM) a las aplicaciones de gestión (fig. 5), por ejemplo, los agentes SNMP, y actúa como intermediario entre estas dos partes. También se encarga de almacenar los objetos y atributos persistentes.
Registro
El servicio de registro está diseñado para el registro de eventos , es decir, para recopilar información sobre el sistema basada en funciones (en contraposición a información específica de la implementación) y que se aplica a administradores de sistemas o herramientas automatizadas.
El Servicio de Registro permite a las aplicaciones expresar y escribir registros a través de flujos de registro que se dirigen a destinos de salida específicos, como un archivo con nombre. Una vez en el destino de salida, el registro está sujeto a reglas de formato de salida, que son configurables y públicas. La aplicación de registro no necesita conocer ninguno de estos aspectos (por ejemplo, la ubicación del archivo de destino, la rotación o el formato del archivo, etc.), ya que el Servicio de Registro los gestiona en función de la configuración actual del flujo de registro de destino. Dado que el formato de salida es público, herramientas de terceros pueden leer estos archivos de registro.
Se especifican cuatro tipos de flujos de registro: alarma (registros basados en ITU X.733 e ITU X.736), notificación (registros basados en ITU X.730 e ITU X.731), sistema y aplicación . El tipo de aplicación se utiliza para definir flujos de registro específicos de la aplicación. Existe un único flujo de registro predefinido para cada tipo (alarma, notificación y sistema) en un clúster de SA Forum. Las aplicaciones de usuario pueden utilizar cualquiera de los flujos predefinidos o crear nuevos flujos de registro específicos.
Notificación
El servicio de notificación se basa, en gran medida, en el modelo de gestión de fallos de la UIT-T (que se encuentra en la serie de documentos X.700), así como en muchas otras recomendaciones complementarias.
El servicio de notificaciones se centra en el concepto de notificación , que explica un incidente o un cambio de estado. Se utiliza el término «notificación» en lugar de «evento» para distinguirlo claramente de «evento» tal como lo define el Servicio de Eventos del AIS.
El servicio NTF se basa en el paradigma de publicación-suscripción . Define seis tipos de notificaciones: alarma, alarma de seguridad, creación/eliminación de objetos, cambio de estado, cambio de valor de atributo y miscelánea. Las notificaciones son generadas/publicadas por los productores mediante la API de productor de notificaciones. Los consumidores de notificaciones pueden ser suscriptores , que se suscriben a las notificaciones y las reciben a medida que se producen; o lectores , que recuperan las notificaciones de los registros persistentes mediante la API de consumidor de notificaciones. Ambos tipos de consumidores de notificaciones pueden definir filtros que especifican las características de las notificaciones que les interesa recibir o leer.
Las notificaciones pueden ser generadas tanto por los servicios AIS como por las aplicaciones. Los servicios AIS que generan notificaciones tienen una sección en la especificación que describe dichas notificaciones.
Seguridad
El servicio de seguridad proporciona mecanismos que AIS Services puede utilizar para autenticar los procesos de los clientes de AIS Services (y potencialmente de otros) dentro del clúster y autorizarlos a realizar actividades específicas. Estos mecanismos permiten preservar la integridad de la infraestructura de alta disponibilidad y de las aplicaciones de SA Forum, incluidos sus datos, protegiéndolas contra el acceso no autorizado.
La aplicación de la seguridad se delega a las propias implementaciones del Servicio AIS: los Servicios AIS con seguridad habilitada solicitan autorización a la implementación SEC en nombre de sus procesos cliente al iniciar diferentes actividades. SEC responde a estas solicitudes de autorización con una indicación de concesión o denegación, y es responsabilidad del Servicio AIS permitir o denegar la operación según corresponda. SEC proporciona estas indicaciones basándose en el conjunto de políticas de seguridad configuradas a través de IMM. Asimismo, informa a sus suscriptores sobre los cambios en las políticas mediante las funciones de devolución de llamada correspondientes.
Marcos de trabajo
Marco de gestión de disponibilidad
El Marco de Gestión de Disponibilidad (AMF) es el facilitador de la disponibilidad de servicios en sistemas compatibles con SA Forum. Coordina la carga de trabajo de las distintas entidades bajo su control según su nivel de preparación para prestar servicios. Para ello, la aplicación debe describirse según el modelo de información especificado para AMF. Este modelo describe qué recursos pertenecen a la aplicación dentro del clúster y qué servicios proporciona.
La entidad lógica básica de este modelo de información es el componente , que representa un conjunto de recursos para el Marco de Gestión de Disponibilidad (AMF) que encapsulan una funcionalidad específica de la aplicación. La carga de trabajo generada al aprovisionar un servicio que AMF puede asignar a un componente se representa como una instancia de servicio de componente (CSI) . Cuando el componente presta activamente el servicio, se le asigna el estado activo en nombre de la CSI que lo representa.
El principio fundamental del diseño tolerante a fallos consiste en proporcionar los servicios mediante un conjunto de entidades redundantes ; por lo tanto, los componentes deben poder actuar como respaldo en nombre del CSI. Los componentes de respaldo se mantienen en un estado que les permite asumir la prestación del servicio en caso de que falle el componente activo. La función de AMF es asignar cargas de trabajo activas o de respaldo a los componentes de una aplicación en función del estado de los componentes y la configuración del sistema.
En consecuencia, las API proporcionadas por el Marco de Gestión de Disponibilidad permiten el registro de componentes, la gestión del ciclo de vida y la asignación de cargas de trabajo. Incluyen funciones para la notificación de errores y la monitorización del estado. También permiten el seguimiento de la asignación de instancias de servicio de componentes entre el conjunto de componentes que protegen el CSI.
La configuración del marco de gestión de disponibilidad incluye políticas de recuperación y reparación. Permite priorizar los recursos y ofrece diversos modelos de redundancia, desde el sencillo modelo 2N (también conocido como 1+1 o activo-en espera) hasta otros más sofisticados como el modelo de redundancia N-way, que permite más de una asignación en espera para la misma instancia de servicio de componente, o el modelo N-way-active, que permite múltiples asignaciones activas.
Para simplificar la administración, AMF agrupa los componentes en unidades de servicio y grupos de servicio, y las instancias de servicio de los componentes en instancias de servicio. Todos estos elementos conforman una aplicación. Mediante IMM, se dispone de un conjunto de operaciones administrativas sobre estas entidades lógicas.
Para la gestión del software, las entidades que ejecutan el mismo software se agrupan por tipos, lo que permite un único punto de entrada para la configuración de estas entidades.
Marco de gestión de software
Un sistema compatible con SA Forum se caracteriza por su configuración de despliegue, que comprende el software desplegado en el sistema junto con todas las entidades de software configuradas. La configuración de despliegue constituye una parte esencial del modelo de información gestionado por el Servicio IMM.
El marco de gestión de software (SMF) mantiene la parte del modelo de información que describe el software disponible y desplegado en el clúster. Sin embargo, el objetivo principal del SMF es permitir la evolución de un sistema en producción mediante la orquestación de la migración de una configuración de despliegue a otra. En términos del SMF, este proceso de migración se denomina campaña de actualización .
El marco de gestión de software (SMF) define un esquema XML que se utiliza para especificar una campaña de actualización. Una implementación de SMF migra el sistema de una configuración de despliegue a una nueva configuración deseada basándose en dicho archivo XML, que es esencialmente un script de acciones ordenadas y cambios de configuración que conducen a la nueva configuración.
Durante esta migración, SMF
- mantiene el modelo de estado de campaña,
- monitores para posibles situaciones de error causadas por la migración y
- Implementa los procedimientos de recuperación de errores según sea necesario.
Para llevar a cabo todas estas tareas, la implementación de SMF interactúa al menos (1) con AMF para mantener la disponibilidad, (2) con IMM para realizar cambios en el modelo de información y (3) con NTF para recibir notificaciones que puedan indicar situaciones de error causadas por la campaña en curso.
El marco de gestión de software también proporciona una API para que los procesos cliente registren su interés en recibir notificaciones cuando se inicie una campaña de actualización relevante en el clúster y a medida que esta avanza por hitos importantes. Esto permite coordinar las acciones específicas de la aplicación con la actualización. Esto puede abarcar desde simplemente bloquear el inicio de una campaña de actualización cuando la aplicación realiza alguna tarea crítica hasta coordinar acciones de actualización a nivel de aplicación, como actualizar el esquema de la base de datos o implementar nuevos protocolos.
Para los proveedores de software que ofrecen aplicaciones para su implementación en un clúster de SA Forum, el Software Management Framework también define un esquema XML para el archivo de tipos de entidad , que describe los tipos de entidad de software implementados por la aplicación. Esta información se utiliza para generar las configuraciones de implementación adecuadas.
Servicios públicos
Control
El servicio de puntos de control permite a los procesos registrar datos de puntos de control de forma incremental, lo que puede utilizarse para proteger una aplicación contra fallos. Cuando un proceso se recupera de un fallo (mediante un reinicio o un procedimiento de conmutación por error ), el servicio de puntos de control puede utilizarse para recuperar los datos previamente guardados y reanudar la ejecución desde el estado registrado, minimizando así el impacto del fallo.
Los puntos de control son entidades que abarcan todo el clúster. Una copia de los datos almacenados en un punto de control se denomina réplica del punto de control, que normalmente se almacena en la memoria principal en lugar de en el disco por motivos de rendimiento. Un punto de control puede tener varias réplicas almacenadas en diferentes nodos del clúster para protegerlo contra fallos de nodo. El proceso que crea el punto de control puede elegir entre políticas de actualización de réplicas síncronas o asíncronas. En el caso de la replicación asíncrona, también se puede seleccionar la ubicación conjunta para optimizar el rendimiento de la actualización.
Eventos
El Servicio de Eventos es un mecanismo de comunicación multipunto de publicación/suscripción basado en el concepto de canales de eventos: uno o más publicadores se comunican de forma asíncrona con uno o más suscriptores anónimos mediante eventos a través de un canal de eventos. Los canales de eventos son entidades con nombre a nivel de clúster que garantizan la entrega de eventos con el mejor esfuerzo posible. Los publicadores también pueden ser suscriptores del mismo canal de eventos.
Los eventos constan de una cabecera estándar y cero o más bytes de datos de evento publicados. La API del Servicio de Eventos no impone un formato específico para los datos de evento publicados.
Cuando un proceso se suscribe a un canal de eventos para recibir eventos publicados, especifica los filtros que se aplicarán a dichos eventos. Los eventos solo se entregan al proceso si cumplen con los filtros especificados.
Cabellos
El servicio de bloqueo es un servicio de bloqueo distribuido , diseñado para su uso en un clúster donde los procesos en diferentes nodos pueden competir entre sí por el acceso a un recurso compartido. Para ello, el servicio de bloqueo proporciona entidades llamadas recursos de bloqueo, que a su vez, los procesos de la aplicación utilizan para coordinar el acceso a dichos recursos compartidos.
El Servicio de Bloqueo proporciona un modelo de bloqueo sencillo que admite un modo de bloqueo para acceso exclusivo y otro para acceso compartido. Los bloqueos que proporciona el Servicio de Bloqueo no son recursivos. Por lo tanto, reclamar un bloqueo no implica reclamar otro; cada bloqueo debe reclamarse individualmente.
Mensajes
El Servicio de Mensajería especifica las API para un sistema de comunicación entre procesos en todo el clúster . La comunicación se basa en colas de mensajes identificadas por un nombre lógico. Cualquier número de procesos puede enviar mensajes a una cola , pero solo uno a la vez puede abrirla para recibirlos. Por lo tanto, la única cola de mensajes admite patrones de comunicación punto a punto o multipunto a punto.
Los procesos que envían mensajes a una cola de mensajes desconocen la identidad del proceso receptor; por lo tanto, es posible que el proceso que originalmente recibía estos mensajes haya sido reemplazado por otro proceso durante una conmutación por error o un cambio de protocolo.
Las colas de mensajes se pueden agrupar para formar grupos de colas de mensajes. Estos grupos permiten la comunicación multipunto a multipunto. Se identifican mediante nombres lógicos, de modo que el proceso emisor desconoce el número de colas de mensajes y su ubicación dentro del clúster con el que se comunica. Los grupos de colas de mensajes se utilizan para distribuir mensajes entre las colas que pertenecen a cada grupo. MSG define tres políticas de distribución unicast : distribución de carga equitativa, distribución de carga equitativa local y mejor cola local, además de la política de difusión ( multidifusión ).
Previa solicitud, el Servicio de Mensajería proporciona diferentes garantías de entrega (por ejemplo, acuse de recibo, persistencia de mensajes, etc.) en colas de mensajes y en grupos de colas de mensajes unicast.
Nomenclatura
El Servicio de Nombres proporciona un mecanismo mediante el cual se asocian nombres fáciles de usar a los objetos, de modo que estos objetos puedan buscarse a partir de sus nombres. Los objetos suelen representar puntos de acceso a servicios, puntos finales de comunicación y otros recursos que proporcionan algún tipo de servicio.
El Servicio de Nombres no impone un formato ni una convención específicos para los nombres ( se asume la codificación UTF-8 ) ni para los objetos a los que están vinculados. Permite a los usuarios del servicio seleccionar y utilizar su propio esquema de nombres sin asumir ninguna configuración de hardware o software lógica específica. Se espera que los clientes del Servicio de Nombres comprendan la estructura, el formato y la semántica de las vinculaciones de objetos que pretenden almacenar y recuperar del servicio.
Temporizadores
El servicio de temporizador proporciona un mecanismo mediante el cual los procesos cliente pueden configurar temporizadores y recibir notificaciones cuando estos expiran. Un temporizador es un objeto lógico que se crea dinámicamente y representa su tiempo de expiración como un valor absoluto o una duración a partir del tiempo actual.
El servicio de temporizadores ofrece dos tipos: temporizadores de evento único y temporizadores periódicos. Los temporizadores de evento único caducan una sola vez y se eliminan tras recibir una notificación. Los temporizadores periódicos caducan cada vez que se alcanza una duración específica, y el proceso recibe una notificación sobre la caducidad. Los temporizadores periódicos deben eliminarse explícitamente mediante una función de eliminación de temporizadores.
Modelo de programación
Todos los servicios AIS comparten el mismo modelo de programación. Se utilizan las mismas convenciones de nomenclatura, tipos y constantes predefinidos estándar, semántica de API, control del ciclo de vida de la biblioteca, etc., en toda la especificación.
La interfaz de aplicación del Foro SA se establece entre un proceso y una biblioteca que implementa dicha interfaz. Está diseñada para su uso tanto en procesos de aplicación multihilo como monohilo. El término «proceso» puede considerarse equivalente a un proceso definido por el estándar POSIX; sin embargo, AIS no exige un proceso POSIX , sino cualquier entidad equivalente que el sistema proporcione para gestionar el software en ejecución.
El servidor de área es una abstracción que representa el servidor que proporciona servicios para un área de especificación (Marco de Gestión de Disponibilidad, Servicio de Membresía de Clúster, Servicio de Punto de Control, etc.). Cada área tiene un servidor de área lógico independiente, aunque el implementador puede crear un módulo físico independiente para cada servidor de área o combinar uno o más servidores de área en un único módulo físico.
Las bibliotecas de implementación de área pueden estar implementadas en una o varias bibliotecas físicas; sin embargo, se requiere un proceso para inicializar, registrar y obtener un objeto de selección del sistema operativo por separado para cada biblioteca de implementación de área. Por lo tanto, desde el punto de vista de la programación, es útil considerarlas como bibliotecas independientes.
El modelo de uso es típico de una arquitectura basada en eventos, en la que la aplicación realiza una configuración y luego recibe devoluciones de llamada cuando ocurren eventos (fig. 6).
El uso de una biblioteca de disponibilidad de servicios comienza con una llamada para inicializar la biblioteca, que potencialmente carga cualquier código dinámico y vincula las llamadas asíncronas implementadas por el proceso. Cuando el proceso ya no requiere el uso de las funciones del área, llama a la función de finalización del área, que disocia el proceso de la instancia de implementación del área de interfaz y recupera los recursos asociados.
AIS emplea modelos de programación tanto síncronos como asíncronos. Las API síncronas se utilizan generalmente para las interfaces de administración de bibliotecas y asociaciones. Muchos servicios de AIS permiten realizar un seguimiento de los cambios en las entidades que implementan. El seguimiento de la API suele constar de tres funciones: iniciar y detener el seguimiento de una entidad, invocadas por el cliente; y la devolución de llamada, invocada por el servicio, para notificar al cliente sobre los cambios (pendientes) de una entidad rastreada.
Compatibilidad con versiones anteriores
Para lograr la compatibilidad con versiones anteriores al evolucionar la especificación AIS, se siguen una serie de reglas:
- La definición de una función o tipo nunca cambia para una versión específica de SA Forum.
- Los cambios en la definición de una función o tipo (como agregar un nuevo argumento o un nuevo campo a una estructura de datos) obligan a definir un nuevo nombre para la función o el tipo. Este nuevo nombre se crea a partir del nombre original de la versión anterior, añadiendo un sufijo que indica la versión en la que se modificó la función o el tipo (por ejemplo, saAmfComponentRegister_3()).
- Como excepción a la regla anterior, se pueden agregar nuevos valores de enumeración, valores de indicadores o campos de unión a un tipo de enumeración, indicador o unión existente sin cambiar el nombre del tipo, siempre que no cambie el tamaño del tipo de enumeración, indicador o unión.
- Los implementadores de AIS deben asegurarse de respetar los números de versión proporcionados por la aplicación al inicializar la biblioteca y no exponer nuevos valores de enumeración a aplicaciones que utilicen versiones anteriores.
- Los implementadores de AIS también deben asegurarse de respetar los números de versión proporcionados por la aplicación cuando se inicializa la biblioteca, con respecto a los códigos de error nuevos o modificados, y no exponer códigos de error que solo se aplican a funciones en la versión más reciente de la especificación a aplicaciones escritas con una versión anterior de la especificación.
Como ejemplo, consideremos una versión principal Vx de un servicio determinado que incluye una función f(), y supongamos que f() tuvo que modificarse en una versión principal más reciente Vy (Vy > Vx), lo que llevó a la introducción de la variante f_y() que ahora reemplaza a f() en Vy.
Considerando una implementación de AIS que admite ambas versiones, Vx y Vy, un proceso puede inicializar la biblioteca especificando Vx o Vy:
- Si el proceso inicializa un identificador de biblioteca con Vx, este identificador no proporciona acceso a las funciones que se han introducido en versiones posteriores a Vx. En particular, este identificador no permitirá que el proceso invoque correctamente f_y().
- Si el proceso inicializa un identificador de biblioteca con Vy, este identificador no proporciona acceso a una función introducida en versiones anteriores a Vy y posteriormente reemplazada por una variante más reciente de la misma función. En particular, este identificador no permitirá que el proceso invoque correctamente la función f().
Sin embargo, tenga en cuenta que un proceso puede inicializar la biblioteca varias veces, utilizando en cada ocasión la versión adecuada a la funcionalidad que pretende obtener.
El documento de especificaciones de un servicio AIS para Vy solo incluye la última variante de una función o definición de tipo compatible con Vy.
Las versiones de las especificaciones se versionan de la siguiente manera: <código de lanzamiento>.<versión principal>.<versión secundaria>
El código de lanzamiento se indica con una letra mayúscula. La compatibilidad con versiones anteriores solo se mantiene entre versiones con el mismo código. La versión principal y la versión secundaria son números incrementales. Los lanzamientos con un cambio en el número principal pueden introducir nuevas funciones y modificar la API de forma compatible con versiones anteriores, como se describe anteriormente. Los lanzamientos con un cambio en el número secundario no modifican la API. Proporcionan correcciones de errores, cambios editoriales y aclaraciones con respecto a su predecesor.
Registro de implementación
El Registro de Implementaciones del Foro de Disponibilidad de Servicios (SA Forum) es un proceso que permite registrar y publicar las implementaciones de las especificaciones del Foro de Disponibilidad de Servicios. No es necesario ser miembro para registrar las implementaciones. Las implementaciones registradas con éxito se denominan «Registradas en el Foro de Disponibilidad de Servicios».
Véase también
Referencias
- ↑ "Estándar IEEE para la especificación de interfaz de aplicación para sistemas blockchain" . standards.ieee.org . Consultado el 16 de octubre de 2025 .
Enlaces externos
- Tutoriales de especificaciones
- Sitio web del Foro SA
- OpenAIS
- OpenSAF
- Interfaces de programación de aplicaciones