atributo message

O atributo [mensagem] 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 [mensagem] .

function-name

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.

nome do param

O nome do parâmetro conforme definido no arquivo IDL.

Comentários

Como mensagens do cliente, chamadas de procedimento remoto com o atributo [mensagem] são entregues ao servidor de forma assíncrona pelo transporte de ncadg_mq enfileiramento de mensagens. Você pode indicar mensagens de modo síncrono especificando o protocolo de transporte ncadg_mq sem usar o atributo [mensagem] .

Ao especificar mensagens de modo assíncrono, o atributo [mensagem] 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 de 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 qualidade de serviço, prioridade de chamada e tempo de vida da chamada para o processo do servidor.

As seguintes restrições também se aplicam ao atributo [mensagem] :

  • 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 [mensagem] 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

Código

Local

ncadg_mq

nocode

Otimizar

Enfileiramento de mensagens RPC

RpcBindingSetOption

RpcBindingInqOption

Vazio