Partager via


BinaryServerFormatterSink.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 message. Le 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 que le récepteur de messages actuel a terminé son travail. Par instance, 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 transféré vers le bas de la chaîne du récepteur, et n’importe quel récepteur peut créer un flux de demande qui sera renvoyé au récepteur 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 arrive 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 que le récepteur formateur soit atteint. Le récepteur du formateur désérialise ensuite le message et le transfère à l’infrastructure de communication à distance. Ensuite, l’infrastructure de communication à distance transforme le message en appel de méthode et appelle l’objet serveur.

S’applique à