|
当基于某个终结点创建的ChannelFactory<TChannel>被开启的之后,位于服务模型层的客户端运行时框架被成功构建。站在编程的角度看ChannelFactory<TChannel>,它就是一个创建用于服务调用的服务代理对象的工厂。由于服务调用需要借助于服务代理来完成,我们很有必要从整个客户端运行架构层面来了解服务代理和基于服务代理的服务调用是如何实现的。
目录
一、服务代理是一个透明代理
二、服务调用的流程
操作选择
输入参数检验
序列化请求消息
请求消息的发送和回复消息的接收
回复消息的检验
反序列化回复消息
检验返回值(或者ref/out参数)
一、服务代理是一个透明代理
如果你阅读了《WCF技术剖析(卷1)》第8章《客户端(Client)》,你应该知道通过ChannelFactory<TChannel>创建的服务代理对象是一个“透明代理(Transparent Proxy)”对象。而这可以通过调用RemotingServices的静态方法IsTransparentProxy来检验。为此我写了如下一段简单的检验程序,而输出的结果证实了“服务代理是透明代理”的结论。
using (ChannelFactory<ICalculate> channelFactory = new ChannelFactory<ICalculate>("calculateservice")){
ICalculate calculator = channelFactory.CreateChannel();
bool isTransparentProxy = RemotingServices.IsTransparentProxy(calculator);
Console.WriteLine("Service porxy is a transparent proxy? {0}.", isTransparentProxy ?"Yes" : "No");
}
NET技术:WCF客户端运行时架构体系详解[下篇],转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。