Share via


Especificación de puntos de conexión

Un punto de conexión es una dirección específica de la red de un proceso de servidor para las llamadas a procedimientos remotos. El nombre real del punto de conexión depende de la secuencia de protocolo utilizada. Por ejemplo, puertos de uso TCP, UDP y HTTP. Las canalizaciones con nombre usan un nombre de canalización con nombre. Las aplicaciones cliente/servidor pueden usar un punto de conexión conocido o un punto de conexión dinámico. En esta sección se presentan las técnicas que usan los programas de servidor para especificar puntos de conexión conocidos y dinámicos. La información se describe en los temas siguientes:

Especificar puntos de conexión conocidos

Cuando el servidor usa un punto de conexión conocido, puede incluir los datos del punto de conexión como parte de su entrada de base de datos de servicio de nombres. Si es así, el identificador de enlace del cliente contiene una dirección de servidor completa que incluye el punto de conexión conocido cuando el cliente importa el identificador de enlace desde la entrada del servidor.

El programa de servidor también puede especificar puntos de conexión conocidos al mismo tiempo que especifica secuencias de protocolo. Invoque la función RpcServerUseProtseqEp o RpcServerUseProtseqEpEx . La diferencia entre los dos es que la última función tiene un parámetro adicional que el servidor puede usar para controlar la asignación de puertos dinámicos.

Si el programa de servidor especifica su información de punto de conexión de esta manera, también debe llamar a la función RpcEpRegister para registrar el punto de conexión en el mapa del punto de conexión. Aunque el punto de conexión siempre es el mismo, el cliente puede usar el mapa del punto de conexión para buscar el servidor.

Al igual que las secuencias de protocolo, una aplicación puede especificar información de punto de conexión en su archivo IDL. Cuando lo hace, debe registrar las secuencias de protocolo y los puntos de conexión al mismo tiempo invocando la función RpcServerUseAllProtseqsIf o RpcServerUseAllProtseqsIf. En este caso, el cliente tiene acceso a la información del punto de conexión a través de la especificación de interfaz en el archivo IDL. Por lo tanto, no es necesario llamar a la función RpcEpRegister .

Especificar puntos de conexión dinámicos

Un punto de conexión dinámico es un punto de conexión que el equipo host del servidor asigna cuando el servidor comienza la ejecución. La mayoría de las aplicaciones de servidor usan puntos de conexión dinámicos para evitar conflictos con otros programas sobre el número limitado de puertos disponibles en el sistema de equipos host del servidor. Sin embargo, los programas que usan canalizaciones con nombre o la secuencia de protocolo ncalrpc tienen un espacio de nombres de punto de conexión muy grande. Se benefician menos de puntos de conexión dinámicos que los programas que usan otros transportes.

Los programas de servidor registran puntos de conexión dinámicos en una base de datos de mapa de puntos de conexión. Si desea que el servidor use cualquier punto de conexión disponible, llame a RpcServerUseAllProtSeqs, RpcServerUseAllProtseqsEx, RpcServerUseProtseq o RpcServerUseProtseqEx. Esto establece la biblioteca en tiempo de ejecución rpc para que use todas o una secuencia de protocolo válida con puntos de conexión dinámicos. A continuación, el servidor debe llamar a RpcServerInqBindings para obtener un conjunto de identificadores de enlace válidos. El servidor pasa el conjunto de identificadores de enlace, o vector de enlace, a la función RpcEpRegister para registrar todos los puntos de conexión adecuados en el mapa del punto de conexión. Para cada llamada que realiza el servidor a RpcEpRegister, debe haber una llamada correspondiente a RpcBindingVectorFree para liberar la memoria que usa el vector de enlace.

Tenga en cuenta que los programas de servidor pueden usar la función RpcEpRegisterNoReplace en lugar de RpcEpRegister. Los programas suelen usar RpcEpRegisterNoReplace cuando se deben ejecutar varias copias de un programa de servidor en un sistema host de servidor.

Tanto las funciones RpcEpRegister como RpcEpRegisterNoReplace agregan las interfaces del servidor y los identificadores de enlace a la base de datos del asignador de puntos de conexión. Cuando el cliente realiza una llamada a procedimiento remoto mediante un identificador enlazado parcialmente, la biblioteca en tiempo de ejecución del cliente solicita al asignador de puntos de conexión del equipo servidor el punto de conexión del punto de conexión de una instancia de servidor compatible. La biblioteca cliente proporciona el UUID de interfaz, la secuencia de protocolos y, si está presente, el UUID de objeto en el identificador de enlace de cliente. El asignador de puntos de conexión busca una entrada de base de datos que coincida con la información del cliente. El UUID de la interfaz cliente/servidor, la versión principal de la interfaz y la secuencia de protocolo deben coincidir exactamente. Además, la versión secundaria de la interfaz del servidor debe ser mayor o igual que la versión secundaria del cliente.

Si todas las pruebas se realizan correctamente, el asignador de puntos de conexión devuelve el punto de conexión válido y la biblioteca en tiempo de ejecución del cliente actualiza el punto de conexión en el identificador de enlace.

Los puntos de conexión dinámicos se purgan automáticamente de la base de datos del asignador de puntos de conexión cuando el proceso del servidor deja de ejecutarse. Puede quitar el punto de conexión de la base de datos del asignador de puntos de conexión antes de que el programa de servidor salga mediante la función RpcEpUnregister , o bien puede permitir la limpieza automática para administrar la eliminación del punto de conexión.