atributo message
El atributo [message] indica que la llamada a procedimiento remoto se debe tratar como un mensaje del cliente al servidor.
[message, optional-attribute-list] void function-name(
[in, optional-parameter-attributes] param-name,. . .);
-
optional-attribute-list
-
Otros atributos que se aplican a la función. Solo se pueden usar los atributos [local], [nocode], [code] y [optimize] con el atributo [message].
-
function-name
-
Nombre de la función tal y como se define en el archivo IDL.
-
optional-parameter-attributes
-
Cero o más atributos MIDL que se aplicarán al parámetro .
-
param-name
-
Nombre del parámetro tal y como se define en el archivo IDL.
Como mensajes del cliente, las llamadas a procedimientos remotos con el atributo [message] se entregan al servidor de forma asincrónica a través del transporte de ncadg_mq cola de mensajes. Puede indicar la mensajería en modo sincrónico especificando el protocolo de transporte ncadg_mq sin usar el atributo [message].
Al especificar la mensajería en modo asincrónico, el atributo [message] permite al cliente realizar la llamada a procedimiento remoto y devolver inmediatamente, incluso cuando la aplicación de servidor no responde. Si el servidor de destino no está disponible, la llamada se almacenará hasta que el servidor esté disponible.
Además, la mensajería en modo asincrónico permite controlar las propiedades de la cola de mensajes de la cola de recepción para el servidor. Consulte RpcBindingSetOption para obtener más información sobre cómo seleccionar la calidad del servicio, la prioridad de llamada y la duración de las llamadas para el proceso del servidor.
Las restricciones siguientes también se aplican al atributo [message]:
- Microsoft Message Queuing debe implementarse en los sistemas cliente y servidor, y los sistemas deben estar visibles entre sí según lo determinado por el ámbito de la instalación de la cola de mensajes.
- El enlace debe usar puntos de conexión conocidos y el protocolo de transporte ncadg_mq .
- La función no puede contener parámetros de salida ni un tipo de valor devuelto distinto de void. Tenga en cuenta que esta última restricción hace que el atributo [message] no sea adecuado para los métodos de interfaz COM (objeto), en este momento. La próxima versión de MIDL permitirá que las funciones [message] devuelvan error_status_t o HRESULT.
- Cualquier interfaz que contenga al menos una llamada [message] debe registrarse llamando a RpcServerRegisterIf o RpcServerRegisterIfEx antes de llamar a RpcServerUseProtseqEpEx(ncadg_mq). De lo contrario, las llamadas que estaban esperando en la cola del servidor se leerán antes de que se registre la interfaz y se producirá un error en las llamadas.
[message] void DisplayString(
[in, string] char * p1);
[message] void VarDataArray(
[in, size_is(iSize)] ARRAY_TYPE lpMyArray,
[in] int iSize,
[in] unsigned long ulChksum);