Compartir a través de


BinaryServerFormatterSink.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 que se recuperan 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

Cuando este método devuelve, contiene ITransportHeaders con los encabezados que se van a agregar al mensaje devuelto que se dirige 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 mensaje. El mensaje, 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 el receptor de mensajes actual haya terminado 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 reenvía hacia abajo de la cadena del receptor y cualquier receptor puede crear un flujo de solicitud que se devolverá al receptor de 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 se alcanza el receptor del formateador. A continuación, el receptor de formateador deserializa el mensaje y lo reenvía a la infraestructura de comunicación remota. A continuación, la infraestructura de comunicación remota convierte el mensaje en una llamada de método y llama al objeto de servidor.

Se aplica a