BinaryServerFormatterSink.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 接口的消息通过调用 ProcessMessage 消息接收器对象从客户端传递到服务器端。 消息接收器链接在一起,这意味着,在当前消息接收器完成其工作后,每个消息接收器负责在下一个消息接收器上调用 ProcessMessage 。 例如,与同步相关的消息接收器可能会导致获取或释放锁并将其委托给下游消息接收器。
当格式化程序通道接收器获取需要通过通道发送的消息时,它会调用 SyncProcessMessage,并将消息作为参数传递。 然后,格式化程序接收器创建传输标头数组,并在格式化程序接收器上调用 GetRequestStream 。 此调用在接收器链中向下转发,任何接收器都可以创建将传回格式化程序接收器的请求流。 此调用返回后,将序列化消息, ProcessMessage 在接收器链中的第一个链上调用消息,并将消息传递给通道接收器。
通道接收器获取消息后,它们可以将数据写入流,将标头添加到标头数组,并将自身添加到接收器堆栈,然后再将调用转发到下一个接收器。 当调用到达链末尾的传输接收器时,传输接收器会通过通道将标头和序列化消息发送到服务器,在该服务器上,进程将反转。
当消息到达服务器端时,传输接收器从流中检索标头和序列化消息,并通过接收器链转发它们,直到到达格式化程序接收器。 然后,格式化程序接收器反序列化消息并将其转发到远程处理基础结构。 然后,远程处理基础结构将消息转换为方法调用,并调用服务器对象。