SdlChannelSink.ProcessMessage Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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é.