科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件Vista新技术:WCF开发指南之客户端开发

Vista新技术:WCF开发指南之客户端开发

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

为了调用服务上的操作,客户端首先需要把服务合同导入到客户端的本地描述中

作者:朱先忠编译 来源:天极开发 2007年11月3日

关键字:

  • 评论
  • 分享微博
  • 分享邮件
五. WCF架构

  到目前为止,本文讨论了建立和消费简单WCF服务所有要求的内容。然而,WCF还为可靠性、事务、安全和实例激活等提供了极其宝贵的支持,所有这些都依赖于WCF基于拦截的架构。

  让客户端与代理交互意味着,WCF总是介于服务和客户端之间来拦截调用并且执行预调用和调用后处理。当代理把调用堆栈帧串行化为一条消息并且沿着一个通道链发送消息时,该解释即开始。

  每一个客户端通道都要做消息的预调用处理。这个链的正确结构和组成在很大程度上依赖于绑定。例如,其中一个通道负责编码该消息(二进制,文本或MTOM),一个通道负责传递安全调用上下文,一个通道负责传播客户端事务,一个通道负责管理可靠的会话,一个通道负责加密消息正文(如果这样配置的话),等等。客户端的最后一个通道是传输通道,它负责把消息由经配置的传输传送到宿主。

  在宿主端,该消息也经过一个通道链,从而实现宿主端消息的预调用处理。在宿主端的第一个通道是传输通道,它接收来自传输的消息。随后的通道执行各种任务,例如解密消息正文、译解消息、把传播的事务设置到执行线程、设置安全主管、管理会话和激活服务实例。最后一个通道在宿主端把该消息传递到调度器。由调度器把该消息值的转换成一个堆栈帧并且调用服务实例。图8描述了这一顺序。


图8:WCF架构看上去的样子。

  在客户端和服务端的拦截都要确保客户端和服务得到它们所要求的运行时刻环境以便正确运行。由服务实例执行该调用并且把控制返回到调度器,由它把返回值和错误信息(如果有的话)转换成一条返回消息。现在,整个过程被颠倒:调度器通过宿主端通道传送消息以执行调用后处理,例如管理事务、撤销实例、编码应答信息、加密它,等等。返回的消息转到传输通道,在此把消息发送到客户端通道以便客户端调用后处理:解密,编码,提交或取消事务,等等。

  由代理把返回的消息转换成一个堆栈帧并且把控制返回到客户端。最值得注意的是,在这个架构中的几乎所有的点都提供了可扩展性钩子-你可以为专利性行为提供定制通道,定制实例管理或定制安全。事实上,WCF提供的这些标准工具都是使用相同的可扩展性模型实现的。

  六. 使用通道

  你可以直接使用通道来调用服务上的操作而甚至不必依赖于一个SvcUtil生成的代理。显示于列表10(见本文相应下载源码)中的ChannelFactory<T>类能够使你任意地创建一个代理。你需要提供给它的构造器端点信息-或者是来自配置文件的端点名,或者是绑定和地址对象,或者是一个端点对象。然后,使用CreateChannel()方法以获得一个到代理的参考(顶级通道)并且使用它的方法。最后,关闭该代理或者通过把它强制转换为一个IDisposable接口并且调用其Dispose()方法或强制转换为一个IClientChannel接口并且调用其Close()方法:

ChannelFactory<IMyContract> factory;
//使用默认的站点
factory = new ChannelFactory<IMyContract>("");
IMyContract proxy1 = factory.CreateChannel();
using(proxy1 as IDisposable)
{
proxy1.MyMethod();
}
IMyContract proxy2 = factory.CreateChannel();
proxy2.MyMethod();
IClientChannel clientChannel = proxy2 as IClientChannel;
Debug.Assert(clientChannel != null);
clientChannel.Close();

  七. 总结

  WCF是一种用于构建Windows面向服务的应用程序的SDK。它能够让你使用杰出的CLR编程结构(例如类和接口)来发布和消费服务。这种编程模型是声明性的并且大部分是属性驱动的。WCF基于拦截的架构提供了内置的工具用于管理服务的许多运行时刻方面;并且,从其应用前景来看,它也是构建Windows分布式应用程序的最具生产效率的方式。

  WCF的第一个发行版本为开发服务(例如宿主,服务实例管理,异步调用,可靠性,事务管理,非连接性队列调用和安全性)提供了许多有用的工具。在WCF的第二个发行版本中将添加服务发现以及事件出版和订阅。WCF要求.NET 2.0环境并将同Windows Vista一同发行。另外,你可以在Windows XP SP2和Windows Server 2003 SP1环境下使用它。

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章