Freigeben über


SdlChannelSink.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

Die 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 der an den Client gesendeten Antwortmeldung 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

Der Auftrag des Proxys besteht darin, einen Methodenaufruf, der für ihn aufgerufen wird, in ein Nachrichtenobjekt zu konvertieren. Das Message-Objekt, das die IMessage Schnittstelle implementiert, wird durch Aufrufen ProcessMessage von Nachrichtensenkenobjekten vom Clientende an das Serverende übergeben. Nachrichtensenken werden miteinander verkettet, was bedeutet, dass jede Nachrichtensenke für den Aufruf ProcessMessage der nächsten Nachrichtensenke verantwortlich ist, nachdem sie ihre Arbeit ausgeführt 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 Formatierungskanals eine Nachricht erhält, die über den Kanal gesendet werden muss, ruft sie auf SyncProcessMessage, und übergibt die Nachricht als Parameter. Die Formatierungssenke erstellt dann das Transportheaderarray und ruft GetRequestStream die Formattersenke auf. Dieser Aufruf wird entlang der Senkenkette weitergeleitet, und jede Senke kann einen Anforderungsstream erstellen, der wieder an die Formatierungssenken übergeben 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 die Kanalsenken übergeben.

Nachdem die Kanalsenken die Nachricht erhalten haben, können sie Daten in den Stream schreiben, Header zum Headerarray hinzufügen und sich selbst dem Senkenstapel hinzufügen, bevor sie den Aufruf an die nächste Senke weiterleiten. 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 die Serverseite erreicht, ruft die Transportsenke die Header und die serialisierte Nachricht aus dem Stream ab und leitet diese durch die Senkenkette weiter, bis sie die Formatierungssenke erreichen. Die Formatierungssenke deserialisiert dann die Nachricht und leitet sie an remoting weiter, wo die Nachricht in einen Methodenaufruf umgewandelt und das Serverobjekt aufgerufen wird.

Gilt für: