RPC asincrónico

La llamada a procedimiento remoto asincrónico (RPC) es una extensión de Microsoft que aborda varias limitaciones del modelo RPC tradicional, tal y como se define en open Software Foundation–Distributed Computing Environment (OSF-DCE). RPC asincrónico separa una llamada a procedimiento remoto de su valor devuelto, que resuelve las siguientes limitaciones de RPC tradicional y sincrónica:

  • Varias llamadas pendientes desde un cliente de un solo subproceso. En el modelo RPC tradicional, un cliente se bloquea en una llamada a procedimiento remoto hasta que se devuelve la llamada. Esto impide que un cliente tenga varias llamadas pendientes, mientras sigue teniendo su subproceso disponible para realizar otro trabajo.
  • Clientes lentos o retrasados. Es posible que un cliente que sea lento para generar datos quiera realizar una llamada a procedimiento remoto con datos iniciales y, a continuación, proporcionar datos adicionales a medida que se producen. Esto no es posible con RPC convencional (sincrónico).
  • Servidores lentos o retrasados. Una llamada a procedimiento remoto que tarda mucho tiempo en completarse vinculará el subproceso de envío mientras dure la tarea. Con RPC asincrónico, el servidor puede iniciar una operación independiente (asincrónica) para procesar la solicitud y devolver la respuesta cuando esté disponible. El servidor también puede enviar la respuesta incrementalmente a medida que los resultados estén disponibles sin tener que vincular un subproceso de envío durante la llamada remota. Al hacer que la aplicación cliente sea asincrónica, puede impedir que un servidor lento asote innecesariamente una aplicación cliente.
  • Transferencia de grandes cantidades de datos. La transferencia de grandes cantidades de datos entre el cliente y el servidor, especialmente a través de vínculos lentos, vincula tanto el subproceso de cliente como el subproceso del administrador del servidor durante la transferencia. Con RPC y canalizaciones asincrónicas, la transferencia de datos puede realizarse de forma incremental y sin impedir que el cliente o el servidor realicen otras tareas.

Puede aprovechar los mecanismos rpc asincrónicos declarando funciones con el atributo [async]. Dado que realiza esta declaración en un archivo de configuración de atributos (ACF), no es necesario realizar ningún cambio en el archivo de lenguaje de definición de interfaz (IDL); RPC asincrónico no tiene ningún efecto en el protocolo de conexión (cómo se transmiten los datos entre el cliente y el servidor). Esto significa que los clientes sincrónicos y asincrónicos pueden comunicarse con una aplicación de servidor asincrónica.

En esta sección se presenta información general sobre cómo desarrollar aplicaciones distribuidas mediante RPC asincrónica. La información general se presenta en las secciones siguientes: