BinaryServerFormatterSink.ProcessMessage Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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:
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für