RPC asincrónico
La llamada asincrónica a procedimiento remoto (RPC) es una extensión de Microsoft que aborda varias limitaciones del modelo RPC tradicional, tal 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. Un cliente lento para generar datos puede querer 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 distribución durante la duración de la tarea. Con RPC asincrónica, 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 de forma incremental 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 asombre 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 el subproceso de cliente y el subproceso del administrador del servidor durante la transferencia. Con RPC y canalizaciones asincrónicas, la transferencia de datos se puede realizar de forma incremental y sin bloquear que el cliente o el servidor realicen otras tareas.
Puede aprovechar los mecanismos de RPC asincrónicos declarando funciones con el atributo [asincrónico]. 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:
- declarar funciones asincrónicas
- RPC asincrónica del lado cliente
- RPC asincrónica del lado servidor
- Ordenación causal de llamadas asincrónicas
- control de errores
- RPC asincrónica sobre el protocolo de canalización con nombre
- usar RPC asincrónico con canalizaciones DCE
- asincrónica de DCOM