SdlChannelSink.ProcessMessage Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Solicita el procesamiento de mensajes del receptor actual.
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
Parámetros
- sinkStack
- IServerChannelSinkStack
Pila de receptores de canal que llama al receptor actual.
- requestMsg
- IMessage
Mensaje que contiene la solicitud.
- requestHeaders
- ITransportHeaders
Encabezados recuperados del mensaje entrante del cliente.
- requestStream
- Stream
Secuencia que necesita procesarse y pasarse al receptor de deserialización.
- responseMsg
- IMessage
El resultado que devuelve este método contiene un IMessage con el mensaje de respuesta. Este parámetro se pasa sin inicializar.
- responseHeaders
- ITransportHeaders
El resultado que devuelve este método contiene ITransportHeaders con los encabezados que se van a agregar al encabezado del mensaje devuelto al cliente. Este parámetro se pasa sin inicializar.
- responseStream
- Stream
Cuando este método finaliza, contiene un Stream dirigido al receptor de transporte. Este parámetro se pasa sin inicializar.
Devoluciones
Valor de estado de ServerProcessing que proporciona información sobre cómo se procesa el mensaje.
Implementaciones
Comentarios
El trabajo del proxy es convertir una llamada de método que se invoca en él en un objeto de mensaje. El objeto Message, que implementa la IMessage interfaz, se pasa desde el extremo del cliente al extremo del servidor invocando ProcessMessage en objetos receptores de mensajes. Los receptores de mensajes se encadenan juntos, lo que significa que cada receptor de mensajes es responsable de llamar ProcessMessage al siguiente receptor de mensajes después de que haya realizado su trabajo. Por ejemplo, un receptor de mensajes relacionado con la sincronización puede provocar que se adquiera o libere un bloqueo y se delegue al receptor de mensajes de bajada.
Cuando el receptor del canal formateador obtiene un mensaje que debe enviarse a través del canal, llama a SyncProcessMessage, pasando el mensaje como parámetro. A continuación, el receptor de formateador crea la matriz de encabezados de transporte y llama GetRequestStream a en el receptor del formateador. Esta llamada se envía por la cadena de receptores y cualquier receptor puede crear una secuencia de solicitud que se devolverá al receptor del formateador. Una vez que se devuelve esta llamada, se serializa el mensaje, ProcessMessage se llama a en la primera cadena de la cadena receptora y el mensaje se pasa a los receptores del canal.
Después de que los receptores del canal obtengan el mensaje, pueden escribir datos en la secuencia, agregar encabezados a la matriz de encabezados y agregarse a la pila del receptor antes de reenviar la llamada al siguiente receptor. Cuando la llamada llega al receptor de transporte al final de la cadena, el receptor de transporte envía los encabezados y el mensaje serializado a través del canal al servidor, donde se invierte el proceso.
Cuando el mensaje llega al lado del servidor, el receptor de transporte recupera los encabezados y el mensaje serializado de la secuencia y los reenvía a través de la cadena receptora hasta que llegan al receptor del formateador. A continuación, el receptor de formateador deserializa el mensaje y lo reenvía a la comunicación remota, donde el mensaje se convierte en una llamada al método y se llama al objeto de servidor.