Compartir a través de


SdlChannelSink.ProcessMessage Método

Definición

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.

Se aplica a