Partager via


SdlChannelSink.ProcessMessage Méthode

Définition

Demande le traitement de messages à partir du récepteur en cours.

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

Paramètres

sinkStack
IServerChannelSinkStack

Pile de récepteurs de canal qui a appelé le récepteur en cours.

requestMsg
IMessage

Message qui contient la demande.

requestHeaders
ITransportHeaders

En-têtes récupérés du message entrant provenant du client.

requestStream
Stream

Flux qui doit être traité et passé sur le récepteur de désérialisation.

responseMsg
IMessage

Cette méthode retourne un IMessage contenant le message de réponse. Ce paramètre est passé sans être initialisé.

responseHeaders
ITransportHeaders

Cette méthode retourne un ITransportHeaders contenant les en-têtes à ajouter au message de retour envoyé au client. Ce paramètre est passé sans être initialisé.

responseStream
Stream

Cette méthode retourne un Stream destiné au récepteur de transport. Ce paramètre est passé sans être initialisé.

Retours

Valeur d'état de ServerProcessing qui fournit des informations sur le mode de traitement du message.

Implémente

Remarques

Le travail du proxy consiste à convertir un appel de méthode appelé sur celui-ci en objet message. L’objet Message, qui implémente l’interface IMessage , est passé du bout du client à la fin du serveur en appelant ProcessMessage sur les objets récepteurs de messages. Les récepteurs de messages sont chaînés, ce qui signifie que chaque récepteur de messages est responsable de l’appel ProcessMessage sur le récepteur de messages suivant une fois qu’il a effectué son travail. Par exemple, un récepteur de messages lié à la synchronisation peut entraîner l’acquisition ou la libération d’un verrou et la délégation au récepteur de messages en aval.

Lorsque le récepteur de canal formateur obtient un message qui doit être envoyé sur le canal, il appelle SyncProcessMessage, en passant le message en tant que paramètre. Le récepteur du formateur crée ensuite le tableau d’en-têtes de transport et appelle GetRequestStream le récepteur du formateur. Cet appel est renvoyé dans la chaîne de récepteurs; n'importe quel récepteur peut créer un flux de demande qui est alors repassé au récepteur de formateur. Une fois cet appel retourné, le message est sérialisé, ProcessMessage est appelé sur la première chaîne de la chaîne du récepteur et le message est passé aux récepteurs de canal.

Une fois que les récepteurs de canal ont obtenu le message, ils peuvent écrire des données dans le flux, ajouter des en-têtes au tableau d’en-têtes et s’ajouter eux-mêmes à la pile du récepteur avant de transférer l’appel au récepteur suivant. Lorsque l’appel atteint le récepteur de transport à la fin de la chaîne, le récepteur de transport envoie les en-têtes et le message sérialisé sur le canal au serveur, où le processus est inversé.

Lorsque le message atteint le côté serveur, le récepteur de transport récupère les en-têtes et le message sérialisé à partir du flux et les transfère à travers la chaîne du récepteur jusqu’à ce qu’ils atteignent le récepteur formateur. Le récepteur formateur désérialise ensuite le message et le transfère à la communication à distance, où le message est transformé en appel de méthode et l’objet serveur est appelé.

S’applique à