Compartir a través de


Teoría del control de versiones para RPC y COM

Solo dos métodos completamente infalibles admiten una nueva funcionalidad sin riesgo de problemas de compatibilidad con cables:

  • Cambiar la versión de la interfaz según las reglas; Esto impide que los nuevos clientes se comuniquen con un servidor antiguo y pueden o no impedir que un cliente antiguo se comunique con el nuevo servidor. Esto se aclara más adelante en esta sección.
  • Presenta una interfaz diferente que trata con la nueva funcionalidad.

Una interfaz RPC estándar se identifica mediante una combinación de GUID y número de versión; Una interfaz COM se identifica mediante su GUID. La versión consta de partes principales y secundarias. En el caso de las interfaces estándar con el mismo GUID y números de versión diferentes, una conexión solo es posible cuando la versión principal es la misma y el cliente no es superior a la versión secundaria del servidor.

Una consecuencia es que el cambio del GUID de la interfaz RPC interrumpe la compatibilidad de los cables, mientras que el cambio del nombre de la interfaz no lo hace.

En RPC estándar, una ruta de acceso para actualizaciones y extensiones está bien definida, y básicamente requiere que solo se agreguen nuevos métodos al final de la interfaz y que solo se usen nuevos tipos en los nuevos métodos. Si se necesitan estas adiciones, se debe aumentar la versión secundaria. Cualquier otro cambio requiere un cambio en la versión principal, ya que el software de cliente y servidor sería incompatible en la conexión. La adhesión a estas reglas garantiza siempre que haya una conexión entre un nuevo cliente y un servidor antiguo, o viceversa, ambos lados son totalmente compatibles.

Para una interfaz COM, no se puede usar el atributo version. La creación de nuevas interfaces y la herencia de las interfaces antiguas es un equivalente a manipular la versión en RPC. Normalmente, el mejor enfoque en COM es crear una nueva interfaz para la funcionalidad ampliada. Un equivalente de la versión secundaria es la nueva interfaz que hereda de la anterior. Cambiar métodos antiguos o tipos de datos antiguos requiere una interfaz COM completamente nueva, una interfaz que no hereda de la antigua.

Para COM, la función QueryInterface es un método establecido para comprobar si un servidor admite una interfaz; por lo tanto, las situaciones en las que un cliente puede comunicarse con una versión antigua o nueva de una interfaz se puede resolver fácilmente.