atributo message
O atributo [message] indica que a chamada de procedimento remoto deve ser tratada como uma mensagem do cliente para o servidor.
[message, optional-attribute-list] void function-name(
[in, optional-parameter-attributes] param-name,. . .);
Parâmetros
-
optional-attribute-list
-
Outros atributos que se aplicam à função . Somente os atributos [local], [nocode], [code] e [optimize] podem ser usados com o atributo [message] .
-
nome da função
-
O nome da função conforme definido no arquivo IDL.
-
optional-parameter-attributes
-
Zero ou mais atributos MIDL que serão aplicados ao parâmetro .
-
param-name
-
O nome do parâmetro conforme definido no arquivo IDL.
Comentários
Como mensagens do cliente, chamadas de procedimento remoto com o atributo [message] são entregues ao servidor de forma assíncrona pelo transporte de ncadg_mq mensagem na fila. Você pode indicar mensagens de modo síncrono especificando o protocolo de transporte ncadg_mq sem usar o atributo [message] .
Ao especificar mensagens de modo assíncrono, o atributo [message] permite que o cliente faça a chamada de procedimento remoto e retorne imediatamente, mesmo quando o aplicativo de servidor não estiver respondendo. Se o servidor de destino não estiver disponível, a chamada será armazenada até que o servidor fique disponível.
Além disso, o sistema de mensagens no modo assíncrono permite controlar as propriedades da fila de mensagens da fila de recebimento para o servidor. Consulte RpcBindingSetOption para obter mais informações sobre como selecionar a qualidade do serviço, a prioridade de chamada e o tempo de vida da chamada para o processo do servidor.
As seguintes restrições também se aplicam ao atributo [message] :
- O Enfileiramento de Mensagens da Microsoft deve ser implementado nos sistemas cliente e servidor e os sistemas devem estar visíveis uns para os outros conforme determinado pelo escopo da instalação da fila de mensagens.
- A associação deve usar pontos de extremidade conhecidos e o protocolo de transporte ncadg_mq .
- A função não pode conter parâmetros de saída ou um tipo de retorno diferente de void. Observe que a última restrição torna o atributo [message] inadequado para métodos de interface COM (objeto) neste momento. A próxima versão de MIDL permitirá que as funções [mensagem] retornem error_status_t ou HRESULT.
- Qualquer interface que contenha pelo menos uma chamada [mensagem] deve ser registrada chamando RpcServerRegisterIf ou RpcServerRegisterIfEx antes de chamar RpcServerUseProtseqEpEx(ncadg_mq). Caso contrário, as chamadas que estavam aguardando na fila do servidor serão lidas antes que a interface seja registrada e as chamadas falharão.
Exemplos
[message] void DisplayString(
[in, string] char * p1);
[message] void VarDataArray(
[in, size_is(iSize)] ARRAY_TYPE lpMyArray,
[in] int iSize,
[in] unsigned long ulChksum);
Confira também