Compartir a través de


Administración de conjuntos de conexiones de red (asociaciones)

A partir de Windows 2000, el tiempo de ejecución de RPC puede mantener más de una conexión entre el cliente y el servidor. Esto facilita la operación en los transportes que no admiten el cambio de la identidad de cliente sin restablecer la conexión, los clientes multiproceso y los clientes asincrónicos. El conjunto de conexiones entre un proceso de cliente y un punto de conexión de servidor se denomina asociación en la terminología de RPC. Comprender las asociaciones puede mejorar la implementación de RPC.

En un escenario de identidad de un solo subproceso, RPC abre una conexión entre un proceso de cliente y un punto de conexión de servidor para realizar llamadas RPC. Cuando se realiza una llamada RPC sincrónica, el cliente envía la solicitud al servidor en esta conexión y también recibe la respuesta en él. Cuando crece el número de subprocesos que realizan llamadas RPC en el proceso de cliente, la identidad de seguridad del cliente puede cambiar. Cuando las llamadas asincrónicas o canalizaciones se mezclan con llamadas sincrónicas en el cliente, RPC puede necesitar más de una conexión de red. Todas las conexiones del conjunto se colocan en un grupo de conexiones denominado asociación.

Una llamada a procedimiento remoto sincrónico usa exclusivamente una conexión determinada para cumplir con los estándares RPC. Una conexión usada por una llamada RPC sincrónica se considera ocupada si se ha enviado una solicitud, pero no se ha recibido una respuesta. No se permite ningún otro tráfico en esa conexión hasta que se reciba la respuesta. El tiempo de ejecución de RPC intenta realizar llamadas RPC asincrónicas y canalizaciones multiplex en la misma conexión. Las llamadas sincrónicas y asincrónicas o canalizaciones no se pueden mezclar en la misma conexión, lo que significa que se puede usar una conexión determinada para llamadas RPC sincrónicas o para llamadas RPC asincrónicas o canalizaciones.

RPC intenta reutilizar de forma agresiva las conexiones del grupo. Cuando se realiza una nueva llamada RPC, RPC intenta encontrar una conexión adecuada desde el grupo y crea una nueva conexión solo si no se encuentra una conexión adecuada. Para que una conexión se considere adecuada, debe:

  • Ser del tipo adecuado (sincrónico o asincrónico/canalización).
  • Sea gratis.
  • Tenga la misma identidad de seguridad que el identificador de enlace en el que se realiza la llamada. Si se usa el seguimiento dinámico de identidades, la identidad del identificador de enlace se actualiza desde el token de subproceso al principio de la llamada. Si se usa el seguimiento de identidades estáticos, se usa la identidad de cliente que se marca en el identificador de enlace.

Una vez completada la llamada, una vez recibida la respuesta, la conexión se marca como gratuita y se puede usar para otras llamadas RPC.

La identidad de seguridad en una conexión no puede cambiar. Por ejemplo, si se realiza un gran número de llamadas al mismo servidor en identidades de seguridad diferentes, crece el número de conexiones en el grupo de subprocesos. La propia asociación es contada por referencias y, cuando todas las referencias han desaparecido, se detiene y cierra todas las conexiones. Cada identificador de enlace y cada identificador de contexto contienen una referencia en la asociación. Cuando todos están cerrados, la asociación desaparece. En Windows XP, las asociaciones no necesariamente desaparecen inmediatamente; pueden permanecer durante un breve período (el período de destino es de 20 segundos, pero el tiempo de ejecución de RPC puede optar por retrasar la destrucción de la asociación si no hay subprocesos disponibles para ejecutar la tarea). Si no desea que la asociación permanezca activa después de cerrar el último identificador de contexto o identificador de enlace, use la opción de RPC_C_OPT_DONT_LINGER para forzar al tiempo de ejecución de RPC a cerrar inmediatamente la conexión.