[WCF] Windows Communication Foundation

 Windows Communication Foundation (WCF) 是一套 Windows 平台上开发和发布服务(services)的软件开发工具包(SDK)。WCF 提供服务运行环境,使你能将 CLR 类型暴露为服务,或者反过来将服务封装为 CLR 类型。尽管理论上 WCF 不是必须的,但在实际开发中 WCF 会让我们的工作变得更加简单。WCF 是微软实现的一套工业标准,它定义了服务交互(service interactions)、类型转换(type conversion) 、封装(marshaling)、多协议管理(various protocols' management)等技术细节。也正因为其标准化,WCF 可以支持不同平台服务之间的互操作。WCF 为开发者提供了各种不同应用需求的支持,可大幅提高生产力。在 WCF 的第一个版本(first release)中包含了许多实用功能,比如宿主(hosting)、服务实例管理(service instance management)、异步调用(asynchronous calls)、可靠性(reliability)、事务管理(transaction management)、离线队列调用(disconnected queued calls)、安全(security)等等。WCF 拥有一套优雅(elegant)、可扩展(extensibility)的模型,WCF 本身就是基于该模型开发的。


面向服务(SOA, service-oriented application)示意图

WCF 架构示意图

WCF 宿主架构示意图

WCF 通讯方式示意图

 


  几乎所有的 WCF 的开发文章里都会提到一个名为 "ABC" 的说法,分别是 AddressBinding Contract。Address表示服务的地址。比如 "http://localhost:8080/myservice.svc";Binding表示绑定策略。可以为单个服务添加多个绑定,如内部采取 NetTcpBinding(Binary),外网则采取 WSHttpBinding(Text),当然一个 Binding 也可用于多个服务;Contract表示服务契约。在 SOA 中客户端和服务器之间并没有直接的对象继承和引用关系,双方通过一种约定的格式来传递消息(Message),这种约定就是契约。

  在实际开发中,我们往往会将 "ABC" 反过来进行。首先定义及实现契约,然后选择合适的绑定模式,最后定义服务的地址。在 WCF 中,服务对象不再需要从 MarshalByRefObject 继承,我们也无需再关心 SAO、CAO 之类的区别,其模式更类似于 ASP.NET WebService,同样也支持 Session。WCF 更多地使用声明式编程模式,通过大量的特性(Attribute)来描述服务策略。

 ABeen 测试代码:ABeen.Learn.rar

posted @ 2009-05-05 17:56  ABeen  阅读(334)  评论(0编辑  收藏  举报