SdlChannelSink.ProcessMessage 方法

定义

请求从当前接收器处理消息。

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

参数

sinkStack
IServerChannelSinkStack

调用了当前接收器的信道接收器的堆栈。

requestMsg
IMessage

包含请求的消息。

requestHeaders
ITransportHeaders

从来自客户端的传入消息中检索到的标头。

requestStream
Stream

需要被处理并传递到反序列化接收器的流。

responseMsg
IMessage

此方法返回时,包含持有响应消息的 IMessage。 此参数未经初始化即被传递。

responseHeaders
ITransportHeaders

当此方法返回时,包含一个 ITransportHeaders,它持有要添加到发往客户端的返回信息的标头。 此参数未经初始化即被传递。

responseStream
Stream

当此方法返回时,包含传向传输接收器的 Stream。 此参数未经初始化即被传递。

返回

ServerProcessing 状态值,提供有关如何处理消息的信息。

实现

注解

代理的作业是将对其进行调用的方法调用转换为消息对象。 实现 接口的 IMessage Message 对象通过调用 ProcessMessage 消息接收器对象从客户端传递到服务器端。 消息接收器链接在一起,这意味着每个消息接收器在执行其工作后负责在下一个消息接收器上调用 ProcessMessage 。 例如,与同步相关的消息接收器可能会导致获取或释放锁并将其委托给下游消息接收器。

当格式化程序通道接收器获取需要通过通道发送的消息时,它会调用 SyncProcessMessage,并将消息作为参数传递。 然后,格式化程序接收器会创建传输标头数组,并在格式化程序接收器上调用 GetRequestStream 。 此调用沿接收器链向下转发,并且任何接收器均可创建将被传递回格式化程序接收器的请求流。 此调用返回后,将序列化消息, ProcessMessage 在接收器链中的第一个链上调用消息,并将消息传递到通道接收器。

通道接收器获取消息后,它们可以将数据写入流,将标头添加到标头数组,并将自己添加到接收器堆栈,然后将调用转发到下一个接收器。 当调用到达链末尾的传输接收器时,传输接收器通过通道将标头和序列化消息发送到服务器,而服务器将反向执行进程。

当消息到达服务器端时,传输接收器将从流中检索标头和序列化消息,并通过接收器链转发这些消息,直到它们到达格式化程序接收器。 然后,格式化程序接收器将消息反序列化,并将其转发到远程处理,其中消息将转换为方法调用,并调用服务器对象。

适用于