Freigeben über


BinaryServerFormatterSink.ProcessMessage-Methode

Fordert die Meldungsverarbeitung vom aktuellen Empfänger an.

Namespace: System.Runtime.Remoting.Channels
Assembly: System.Runtime.Remoting (in system.runtime.remoting.dll)

Syntax

'Declaration
Public Function ProcessMessage ( _
    sinkStack As IServerChannelSinkStack, _
    requestMsg As IMessage, _
    requestHeaders As ITransportHeaders, _
    requestStream As Stream, _
    <OutAttribute> ByRef responseMsg As IMessage, _
    <OutAttribute> ByRef responseHeaders As ITransportHeaders, _
    <OutAttribute> ByRef responseStream As Stream _
) As ServerProcessing
'Usage
Dim instance As BinaryServerFormatterSink
Dim sinkStack As IServerChannelSinkStack
Dim requestMsg As IMessage
Dim requestHeaders As ITransportHeaders
Dim requestStream As Stream
Dim responseMsg As IMessage
Dim responseHeaders As ITransportHeaders
Dim responseStream As Stream
Dim returnValue As ServerProcessing

returnValue = instance.ProcessMessage(sinkStack, requestMsg, requestHeaders, requestStream, responseMsg, responseHeaders, responseStream)
public ServerProcessing ProcessMessage (
    IServerChannelSinkStack sinkStack,
    IMessage requestMsg,
    ITransportHeaders requestHeaders,
    Stream requestStream,
    out IMessage responseMsg,
    out ITransportHeaders responseHeaders,
    out Stream responseStream
)
public:
virtual ServerProcessing ProcessMessage (
    IServerChannelSinkStack^ sinkStack, 
    IMessage^ requestMsg, 
    ITransportHeaders^ requestHeaders, 
    Stream^ requestStream, 
    [OutAttribute] IMessage^% responseMsg, 
    [OutAttribute] ITransportHeaders^% responseHeaders, 
    [OutAttribute] Stream^% responseStream
) sealed
public final ServerProcessing ProcessMessage (
    IServerChannelSinkStack sinkStack, 
    IMessage requestMsg, 
    ITransportHeaders requestHeaders, 
    Stream requestStream, 
    /** @attribute OutAttribute() */ /** @ref */ IMessage responseMsg, 
    /** @attribute OutAttribute() */ /** @ref */ ITransportHeaders responseHeaders, 
    /** @attribute OutAttribute() */ /** @ref */ Stream responseStream
)
JScript unterstützt die Übergabe von Werttypargumenten als Verweis nicht.

Parameter

  • sinkStack
    Ein Stapel von Channelempfängern, die den aktuellen Empfänger aufgerufen haben.
  • requestMsg
    Die Meldung, die die Anforderung enthält.
  • requestHeaders
    Header, die aus der vom Client empfangenen Meldung abgerufen wurden.
  • requestStream
    Der Stream, der verarbeitet und an den Deserialisierungsempfänger übergeben werden muss.
  • responseMsg
    Enthält nach dem Beenden dieser Methode eine IMessage mit der Antwort. Dieser Parameter wird nicht initialisiert übergeben.
  • responseHeaders
    Enthält nach dem Beenden dieser Methode ein ITransportHeaders mit den Headern, die dem Header der Antwortmeldung an den Client hinzugefügt werden sollen. Dieser Parameter wird nicht initialisiert übergeben.
  • responseStream
    Enthält nach dem Beenden dieser Methode einen Stream, der an die Transportsenke gesendet wird. Dieser Parameter wird nicht initialisiert übergeben.

Rückgabewert

Ein ServerProcessing-Statuswert, der Informationen über die Art der Meldungsverarbeitung bereitstellt.

Hinweise

Die Aufgabe eines Proxys besteht darin, einen an ihn gerichteten Methodenaufruf in eine Meldung zu konvertieren. Die Meldung, die die IMessage-Schnittstelle implementiert, wird durch Aufrufen von ProcessMessage für Meldungssenkenobjekte vom Client an den Server übermittelt. Meldungssenken sind verkettet, d. h., jede Meldungssenke muss nach Erfüllung ihrer Aufgabe ProcessMessage für die nächste Meldungssenke aufrufen. Ein sychronisierungsbezogener Meldungsempfänger kann z. B. zur Einrichtung oder Freigabe einer Sperre führen, die dann weiter an den nachgeschalteten Meldungsempfänger delegiert wird.

Wenn die Formatierungschannelsenke eine Meldung erhält, die über den Channel gesendet werden muss, ruft sie SyncProcessMessage auf und übergibt die Meldung als Parameter. Die Formatierungssenke erstellt anschließend das Transportheaderarray und ruft GetRequestStream für die Formatierungssenke auf. Dieser Aufruf wird entlang der Empfängerkette weitergeleitet, und jeder Empfänger kann einen Anforderungsstream erstellen, der wieder an den Formatierungsempfänger übergeben wird. Nachdem die Rückgabe für diesen Aufruf erfolgt ist, wird die Meldung serialisiert. Anschließend wird für die erste Kette in der Senkenkette ProcessMessage aufgerufen, und die Meldung wird an die Channelsenken übergeben.

Nachdem die Channelempfänger die Meldung abgerufen haben, können sie Daten in den Stream schreiben, dem Headerarray Header hinzufügen und sich selbst dem Empfängerstapel hinzufügen, bevor der Aufruf an den nächsten Empfänger weitergeleitet wird. Wenn der Aufruf den Transportempfänger am Ende der Kette erreicht, sendet der Transportempfänger die Header und die serialisierte Meldung über den Channel an den Server. Dort wird dieser Prozess umgekehrt.

Wenn die Meldung auf die Serverseite gelangt, ruft der Transportempfänger die Header und die serialisierte Meldung aus dem Stream ab und leitet diese durch die Empfängerkette bis zum Formatierungsempfänger weiter. Der Formatierungsempfänger deserialisiert anschließend die Meldung und leitet sie an die Remotinginfrastruktur weiter. Die Remotinginfrastruktur wandelt die Meldung in einen Methodenaufruf um und ruft das Serverobjekt auf.

.NET Framework-Sicherheit

  • Volle Vertrauenswürdigkeit für den unmittelbaren Aufrufer. Dieser Member kann von nur teilweise vertrauenswürdigem Code nicht verwendet werden. Weitere Informationen finden Sie unter .

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

BinaryServerFormatterSink-Klasse
BinaryServerFormatterSink-Member
System.Runtime.Remoting.Channels-Namespace