Freigeben über


BinaryServerFormatterSink.ProcessMessage Methode

Definition

Fordert die Meldungsverarbeitung von der aktuellen Senke an.

public:
 virtual System::Runtime::Remoting::Channels::ServerProcessing ProcessMessage(System::Runtime::Remoting::Channels::IServerChannelSinkStack ^ sinkStack, System::Runtime::Remoting::Messaging::IMessage ^ requestMsg, System::Runtime::Remoting::Channels::ITransportHeaders ^ requestHeaders, System::IO::Stream ^ requestStream, [Runtime::InteropServices::Out] System::Runtime::Remoting::Messaging::IMessage ^ % responseMsg, [Runtime::InteropServices::Out] System::Runtime::Remoting::Channels::ITransportHeaders ^ % responseHeaders, [Runtime::InteropServices::Out] System::IO::Stream ^ % responseStream);
public System.Runtime.Remoting.Channels.ServerProcessing ProcessMessage (System.Runtime.Remoting.Channels.IServerChannelSinkStack sinkStack, System.Runtime.Remoting.Messaging.IMessage requestMsg, System.Runtime.Remoting.Channels.ITransportHeaders requestHeaders, System.IO.Stream requestStream, out System.Runtime.Remoting.Messaging.IMessage responseMsg, out System.Runtime.Remoting.Channels.ITransportHeaders responseHeaders, out System.IO.Stream responseStream);
abstract member ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
override this.ProcessMessage : System.Runtime.Remoting.Channels.IServerChannelSinkStack * System.Runtime.Remoting.Messaging.IMessage * System.Runtime.Remoting.Channels.ITransportHeaders * System.IO.Stream * IMessage * ITransportHeaders * Stream -> System.Runtime.Remoting.Channels.ServerProcessing
Public Function ProcessMessage (sinkStack As IServerChannelSinkStack, requestMsg As IMessage, requestHeaders As ITransportHeaders, requestStream As Stream, ByRef responseMsg As IMessage, ByRef responseHeaders As ITransportHeaders, ByRef responseStream As Stream) As ServerProcessing

Parameter

sinkStack
IServerChannelSinkStack

Ein Stapel von Channelsenken, die die aktuelle Senke aufgerufen haben.

requestMsg
IMessage

Die Meldung, die die Anforderung enthält.

requestHeaders
ITransportHeaders

Header, die aus der vom Client empfangenen Meldung abgerufen wurden.

requestStream
Stream

Der Stream, der verarbeitet und an die Deserialisierungssenke übergeben werden muss.

responseMsg
IMessage

Enthält nach dem Beenden dieser Methode eine IMessage mit der Antwort. Dieser Parameter wird nicht initialisiert übergeben.

responseHeaders
ITransportHeaders

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
Stream

Enthält nach dem Beenden dieser Methode einen Stream, der an die Transportsenke gesendet wird. Dieser Parameter wird nicht initialisiert übergeben.

Gibt zurück

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

Implementiert

Hinweise

Die Aufgabe des Proxys besteht darin, einen Methodenaufruf, der für ihn aufgerufen wird, in eine Nachricht zu konvertieren. Die Nachricht, die die IMessage -Schnittstelle implementiert, wird vom Clientende an das Serverende übergeben, indem für Nachrichtensenkenobjekte ProcessMessage aufgerufen wird. Nachrichtensenken werden miteinander verkettet, was bedeutet, dass jede Nachrichtensenke für den Aufruf ProcessMessage der nächsten Nachrichtensenke verantwortlich ist, nachdem die aktuelle Nachrichtensenke ihre Arbeit beendet hat. Bei instance kann eine synchronisierungsbezogene Nachrichtensenke dazu führen, dass eine Sperre abgerufen oder freigegeben und an die nachgeschaltete Nachrichtensenke delegiert wird.

Wenn die Senke des Formatierers eine Nachricht erhält, die über den Kanal gesendet werden muss, ruft SyncProcessMessagesie auf, und übergibt die Nachricht als Parameter. Die Formatierersenke erstellt dann das Transportheaderarray und ruft GetRequestStream die Formatierersenke auf. Dieser Aufruf wird entlang der Senkenkette weitergeleitet, und jede Senke kann einen Anforderungsdatenstrom erstellen, der an die Formatierungssenke zurückgegeben wird. Nachdem dieser Aufruf zurückgegeben wurde, wird die Nachricht serialisiert, ProcessMessage in der ersten Kette in der Senkenkette aufgerufen, und die Nachricht wird an den Kanalsenken übergeben.

Nachdem der Kanal die Nachricht erhalten hat, kann er Daten in den Stream schreiben, Header zum Headerarray hinzufügen und sich selbst dem Senkenstapel hinzufügen, bevor der Aufruf an die nächste Senke weitergeleitet wird. Wenn der Aufruf die Transportsenke am Ende der Kette erreicht, sendet die Transportsenke die Header und die serialisierte Nachricht über den Kanal an den Server, wo der Prozess umgekehrt wird.

Wenn die Nachricht auf die Serverseite gelangt, ruft die Transportsenke die Header und die serialisierte Nachricht aus dem Stream ab und leitet diese durch die Senkenkette weiter, bis die Formatierersenke erreicht ist. Die Formatierungssenke deserialisiert dann die Nachricht und leitet sie an die Remotinginfrastruktur weiter. Anschließend wandelt die Remotinginfrastruktur die Nachricht in einen Methodenaufruf um und ruft das Serverobjekt auf.

Gilt für: