Compartir a través de


Granos compatibles

Cuando una activación específica existente está a punto de procesar una solicitud, el tiempo de ejecución comprobará si la versión de la solicitud y la versión real del grano son compatibles. Orleans no infiere en tiempo de ejecución qué directiva usar. El comportamiento predeterminado para determinar si dos versiones son compatibles viene determinada por Orleans.Versions.Compatibility.CompatibilityStrategy.

Compatible con versiones anteriores (valor predeterminado)

Definición

Una versión de interfaz específica Vn puede ser compatible con la máquina virtual si:

  • El nombre de la interfaz no cambió (o el código de tipo invalidado).
  • Todos los métodos públicos presentes en la versión de máquina virtual están en la versión Vn. Es importante que las signaturas de los métodos heredados de máquinas virtuales no se modifiquen: dado que Orleans usa un serializador integrado interno, modificar o cambiar el nombre de un campo (incluso privado) puede hacer que la serialización se interrumpa.

Dado que Vn puede haber agregado métodos en comparación con la máquina virtual, la máquina virtual no es compatible con Vn.

Ejemplo

Si en el clúster tenemos dos versiones de una interfaz determinada, V1 y V2 y esa versión V2 es compatible con V1:

  • Si la activación actual es V2 y la versión solicitada es V1, la activación actual podrá procesar la solicitud normalmente
  • Si la activación actual es V1 y la versión solicitada es V2, la activación actual se desactivará y se creará una nueva activación compatible con V2 (consulte la estrategia del selector de versiones).

Totalmente compatible

Definición

Una versión de interfaz específica Vn puede ser totalmente compatible con la máquina virtual si:

  • Vn es compatible con versiones anteriores con la máquina virtual
  • No se agregaron métodos públicos en la versión Vn

Si Vn es totalmente compatible con la máquina virtual, la máquina virtual también es totalmente compatible con Vn.

Ejemplo

Si en el clúster tenemos dos versiones de una interfaz determinada, V1 y V2 y esa versión V2 es totalmente compatible con V1:

  • Si la activación actual es V2 y la versión solicitada es V1, la activación actual podrá procesar la solicitud normalmente
  • Si la activación actual es V1 y la versión solicitada es V2, la activación actual también podrá procesar la solicitud normalmente.