Freigeben über


message-Attribut

Das Attribut [message] gibt an, dass der Remoteprozeduraufruf als Nachricht vom Client an den Server behandelt werden soll.

[message, optional-attribute-list] void function-name(
    [in, optional-parameter-attributes] param-name,. . .);

Parameter

optional-attribute-list

Andere Attribute, die für die Funktion gelten. Nur die Attribute [local], [nocode], [code] und [optimize] können mit dem [message]- Attribut verwendet werden.

Funktionsname

Der Name der Funktion, wie in der IDL-Datei definiert.

optional-parameter-attributes

Null oder mehr MIDL-Attribute, die auf den Parameter angewendet werden.

param-name

Der Name des Parameters, wie in der IDL-Datei definiert.

Bemerkungen

Als Nachrichten vom Client werden Remoteprozeduraufrufe mit dem [message] -Attribut asynchron über den ncadg_mq Nachrichtenwarteschlangentransport an den Server übermittelt. Sie können Messaging im synchronen Modus angeben, indem Sie das ncadg_mq Transportprotokoll angeben, ohne das [message] -Attribut zu verwenden.

Durch Die Angabe von Messaging im asynchronen Modus ermöglicht das [message] -Attribut dem Client, den Remoteprozeduraufruf auszuführen und sofort zurückzugeben, auch wenn die Serveranwendung nicht reagiert. Wenn der Zielserver nicht verfügbar ist, wird der Aufruf gespeichert, bis der Server verfügbar wird.

Darüber hinaus können Sie mit Messaging im asynchronen Modus nachrichtenwarteschlangeneigenschaften der Empfangswarteschlange für den Server steuern. Weitere Informationen zur Auswahl von Dienstqualität, Anrufpriorität und Anrufdauer für den Serverprozess finden Sie unter RpcBindingSetOption .

Die folgenden Einschränkungen gelten auch für das [message] -Attribut:

  • Microsoft Message Queuing muss in den Client- und Serversystemen implementiert werden, und die Systeme müssen füreinander sichtbar sein, je nach Dem Umfang der Nachrichtenwarteschlangeninstallation.
  • Die Bindung muss bekannte Endpunkte und das ncadg_mq Transportprotokoll verwenden.
  • Die Funktion darf keine Ausgabeparameter oder einen anderen Rückgabetyp als void enthalten. Beachten Sie, dass die letztere Einschränkung das Attribut [message] derzeit für COM-Schnittstellenmethoden (Object) ungeeignet macht. Mit der nächsten Version von MIDL können [Nachrichten] -Funktionen error_status_t oder HRESULT zurückgeben.
  • Jede Schnittstelle, die mindestens einen [Message]- Aufruf enthält, muss registriert werden, indem RpcServerRegisterIf oder RpcServerRegisterIfEx aufgerufen wird, bevor RpcServerUseProtseqEpEx(ncadg_mq) aufgerufen wird. Andernfalls werden Aufrufe, die in der Warteschlange für den Server gewartet haben, gelesen, bevor die Schnittstelle registriert wird, und die Aufrufe schlagen fehl.

Beispiele

[message] void DisplayString(
    [in, string] char * p1);
 
[message] void VarDataArray(
    [in, size_is(iSize)] ARRAY_TYPE lpMyArray,
    [in] int iSize,
    [in] unsigned long ulChksum);

Weitere Informationen

Code

lokal

ncadg_mq

nocode

Optimieren

RPC Message Queuing

RpcBindingSetOption

RpcBindingInqOption

Leere