Identificadores de contexto
A veces, es el caso de que las aplicaciones distribuidas requieran que el programa de servidor mantenga la información de estado entre las llamadas de cliente. Los programas de servidor que servicen más de un cliente a la vez deben mantener la información de estado de cada cliente. Dado que el cliente y el servidor usan espacios de direcciones diferentes en equipos diferentes y no necesariamente confían entre sí, los enfoques comunes para compartir datos a menudo no funcionan. Por ejemplo, el cliente y el servidor no pueden mantener la información de estado en su sesión remota en variables globales porque no comparten el mismo espacio de direcciones global. Es difícil mantener la información en un archivo compartido porque se ejecutan en equipos diferentes. Un enfoque simplista puede ser enviar todo el estado al cliente y hacer que el cliente lo devuelva en la siguiente llamada, pero este enfoque tiene errores: el servidor no confía necesariamente en que el cliente devuelva el estado correcto y el estado puede estar vinculado implícitamente a algún otro estado del servidor, como identificadores de archivo o sockets abiertos.
Microsoft RPC proporciona un mecanismo eficaz y seguro denominado identificadores de contexto para mantener el estado asociado a un cliente determinado en un servidor. La información de estado se denomina contexto del servidor. Los clientes pueden obtener un identificador de contexto para identificar el contexto del servidor para sus sesiones RPC individuales.
Por ejemplo, cada cliente de una aplicación distribuida puede hacer que el programa de servidor cree y actualice un archivo de datos para su sesión RPC. El servidor puede usar su identificador de archivo para el archivo de datos de cada cliente como identificador de contexto. Cada vez que un cliente solicita operaciones en el archivo de datos que el servidor crea para él, el cliente pasa el identificador de contexto al servidor. El cliente no obtiene realmente el propio identificador de archivo; obtiene un token opaco que el tiempo de ejecución rpc del servidor puede asociar de forma única con el identificador de archivo. Dado que el identificador de contexto es realmente un identificador de archivo, el identificador de contexto solo tiene sentido en el espacio de direcciones del servidor. Sin embargo, el programa cliente puede usar el identificador de contexto para indicar al servidor en qué archivo realizar actualizaciones.
Otros datos también pueden ser identificadores de contexto. Por ejemplo, un cliente y un servidor pueden usar un número de registro de base de datos como identificador de archivo. Si el cliente necesitaba realizar una serie de actualizaciones en un registro determinado, podría obtener el número de registro como identificador de contexto. Pasaría el número de registro al servidor cada vez que invocó un procedimiento remoto para actualizar el registro de la base de datos.
Normalmente, un identificador de contexto apunta a un bloque de memoria en el servidor donde el servidor mantiene varias informaciones de administración.
En esta sección se presenta información sobre cómo definir y usar identificadores de contexto. La discusión se presenta en los temas siguientes:
- Desarrollo de interfaz mediante identificadores de contexto
- Desarrollo de servidores mediante identificadores de contexto
- Desarrollo de cliente mediante identificadores de contexto
- Rutina de ejecución del contexto del servidor
- Restablecimiento del contexto de cliente
- Clientes multiproceso y identificadores de contexto