SdlChannelSink.ProcessMessage 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
请求从当前接收器处理消息。
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
需要被处理并传递到反序列化接收器的流。
- responseHeaders
- ITransportHeaders
当此方法返回时,包含一个 ITransportHeaders,它持有要添加到发往客户端的返回信息的标头。 此参数未经初始化即被传递。
返回
ServerProcessing 状态值,提供有关如何处理消息的信息。
实现
注解
代理的作业是将对其进行调用的方法调用转换为消息对象。 实现 接口的 IMessage Message 对象通过调用 ProcessMessage 消息接收器对象从客户端传递到服务器端。 消息接收器链接在一起,这意味着每个消息接收器在执行其工作后负责在下一个消息接收器上调用 ProcessMessage 。 例如,与同步相关的消息接收器可能会导致获取或释放锁并将其委托给下游消息接收器。
当格式化程序通道接收器获取需要通过通道发送的消息时,它会调用 SyncProcessMessage,并将消息作为参数传递。 然后,格式化程序接收器会创建传输标头数组,并在格式化程序接收器上调用 GetRequestStream 。 此调用沿接收器链向下转发,并且任何接收器均可创建将被传递回格式化程序接收器的请求流。 此调用返回后,将序列化消息, ProcessMessage 在接收器链中的第一个链上调用消息,并将消息传递到通道接收器。
通道接收器获取消息后,它们可以将数据写入流,将标头添加到标头数组,并将自己添加到接收器堆栈,然后将调用转发到下一个接收器。 当调用到达链末尾的传输接收器时,传输接收器通过通道将标头和序列化消息发送到服务器,而服务器将反向执行进程。
当消息到达服务器端时,传输接收器将从流中检索标头和序列化消息,并通过接收器链转发这些消息,直到它们到达格式化程序接收器。 然后,格式化程序接收器将消息反序列化,并将其转发到远程处理,其中消息将转换为方法调用,并调用服务器对象。