message-Attribut

Das [ ] Nachrichtenattribut 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 [ lokalen ] Attribute , [ nocode, ] [ code] und [ optimize ] können mit dem Nachrichtenattribut [ 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 [ ] Nachrichtenattribut asynchron über den ncadg _ mq Message Queuing-Transport an den Server übermittelt. Sie können Messaging im synchronen Modus angeben, indem Sie das ncadg _ mq-Transportprotokoll angeben, ohne das [ Nachrichtenattribut zu ] verwenden.

Durch die Angabe des Messagings [ ] im asynchronen Modus ermöglicht das Nachrichtenattribut dem Client, den Remoteprozeduraufruf sofort auf- und zurückzukehren, 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 die Nachrichtenwarteschlangeneigenschaften der Empfangswarteschlange für den Server steuern. Weitere Informationen zum Auswählen der Dienstqualität, der Aufrufpriorität und der Aufruflebensdauer für den Serverprozess finden Sie unter RpcBindingSetOption.

Die folgenden Einschränkungen gelten auch für das [ ] Nachrichtenattribut:

  • Microsoft Message Queuing müssen in den Client- und Serversystemen implementiert werden, und die Systeme müssen füreinander sichtbar sein, wie durch den Bereich der Installation der Nachrichtenwarteschlange festgelegt.
  • 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 zweite Einschränkung das [ ] Nachrichtenattribut derzeit für COM-Schnittstellenmethoden (Objekt) ungeeignet macht. In der nächsten Version von MIDL können [ Nachrichtenfunktionen ] den Fehlerstatus _ t oder _ HRESULT zurückgeben.
  • Jede [ ] Schnittstelle, die mindestens einen Nachrichtenaufruf enthält, muss durch Aufrufen von RpcServerRegisterIf oder RpcServerRegisterIfEx registriert werden, bevor RpcServerUseProtseqEpEx(ncadg _ mq)aufgerufen wird. Andernfalls werden Aufrufe, die auf die Warteschlange für den Server gewartet haben, gelesen, bevor die Schnittstelle registriert wird, und die Aufrufe fehlschlagen.

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

void