【引自Artech的博客】WCF是构建和运行Connected System的一些列技术的总称,它是建立在Web Service Architecture上的一个全新的Communication Infrastructure。你可以把它看成是.NET平台上的新一代的Web Service。WCF为我们提供了Secure & Reliable的Messaging,也为我们提供了更好的Interoperability使得我们可以和其他的平台进行互操作。
微软斥巨资打造WCF,在我们看来主要出于下面两个目的:实现其对现有的Distributed Technology的整合和顺应SOA的浪潮。在WCF之前,微软已经为了提供了一套完整的基于分布式的技术和产品,这些技术和产品使我们构建一个基于于分布式的互联系统变得异常简单。我们熟悉的技术包括Enterprise Service,.NET Remoting, XML Web Service, MSMQ等等,这些不同的技术和产品为相同的功能提供了不同的实现。对于技术的发展,我觉得“统一”是一个主线:为了让基于Web的开发可以采用我们基于Windows Form的Event Driven、Control Based开发模式,我们有了ASP.NET, 为了使具有不同结构的数据(.NET Object, XML, Relational Data etc)采用相同的操作方式,我们有了LINQ,同样,对于一个Distributed Connected System的开发,将不同的Distributed Technology整合起来,提供一个统一的Programming Model是绝对有必要的,WCF就是基于这样的一个目的发展起来的。
但是,如果你认为WCF仅仅是这些不同的Distributed Technology简单地组合在一起,那就错了。WCF在对这些技术进行整合的时候,始终有一个指导方针,那就是SOA。SOA,毫无疑问是今后开发Connected System一个趋势,对于SOA,我想网上充斥着太多的相关的信息,我在这里就不做任何介绍了。SOA的发展离不开一个大家能够一致尊崇的一个标准,而WS-* Spec就是这个标准。WCF基本上实现了目前所有的WS-* Spec 标准。
在过去半年之后,我陆陆续续写了一些关于WCF介绍的一些文章,我把它命名为“我的WCF之旅”,目的在于向大家分享我学习WCF这一段旅程。现在把把这个系列做一个阶段性的总结,以飨读者。这个总结并不是意味着我将结束这个系列,这个系列还会继续,新加的内容我会补上。
在Microsoft提出.NET战略以来,先后推出了一系列产品和技术,这些产品和技术为我们在.NET平台下建立企业级的分布式应用提供了很大的 便利。这些技术和产品包括:.NET Remoting,XML WebSerivce,WSE(2.0,3.0),Enterprise Service, MSMQ 等等。通过合理利用上面这些分布式的技术完全可以为我们建立的一套适合不同层次需要的分布式构架。但这里面仍然存在一些问题,那就是上面这些技术和产品只能解决某一方面的问题;比如.NET Remoting虽然在.NET平台下是一个很好的依靠,但是考虑到他不能提供不同平台之间的互操作性。另外,这些技术适合用了完全不同的编程方式,使得我们很难从容地从其中一种转移到另一种上来。基于这些原因,我们需要一套全新的技术整合以上都这些技术,于是我们有了今天的WCF—— Windows Communication Foundation。WCF建立一套框架,是我们通过一致的编程模式,使用不同的技术构建我们的分布式应用。
虽然很早开始接触WCF,但所学的总是零零碎碎。现在开始系统地研究WCF,希望与大家一同分享我的一些所得, 同时希望能通过这样的一个机会与大家一些探讨WCF,不对的地方希望大家指正。
一开始,我们先建立一个简单程序看WCF如何工作。
WCF实际上是构建了一个框架,这个框架实现了在互联系统中各个Application之间如何通信。使得Developers和Architect在构建分布式系统中,无需在考虑如何去实现通信相关的问题,更加关注与系统的业务逻辑本身。而在WCF Infrastructure中,各个Application之间的通信是由Endpoint来实现的。
当我们Host一个WCF Service的时候,我们必须给他定义一个或多个Endpoint,然后service通过这个定义的Endpoint进行监听来自Client端的请求。当我们的Application需要调用这个Service的时候,因为Client 和Service是通过Endpoint的进行通信的,所以我们必须为我们的Application定义Client端的Endpoint。只有当Client的Endpoint和Service端某个 Endpoint相互匹配(Service端可以为一个Service定义多个Endpoint),Client端的请求才能被Service端监听到。也就是说,我们只有在Client具有一个与Service端完全匹配的Endpoint,我们才能调用这个Service。而这种匹配是比较严格的,比如从匹配Address方面,Client端和Service端的Endpoint Address不仅仅在URI上要完全匹配Service,他们的Headers也需要相互匹配。对于Binding, 一般地,Client需要有一个与Service端完全一样的Binding,他们之间才能通信。
三、在WCF中实现双向通信(Bi-directional Communication)
作为Remoting中实现双向通信对比,来讨论一下WCF的双向通信。为了使我们能够更好地对比双向通信在 Remoting中和WCF中的实现,我们的Sample采用一样的业务逻辑——调用一个数学计算的远程调用,除了传递相应的操作数之外,我们还传递一个对象,这个对象可以在Server端中回调 (Callback) 把运算结果在Client端显示出来。
四、WCF中的序列化(Serialization)
在分布式系统中,一个Application与另一个Application之间进行交互,必然需要携带数据。系统交互完全是应 Message的方式进行的,Message是XML,当然置于Message中的数据也应该是XML(XML Infoset)。如何处理这些交互的数据,我们可能首先想到的就是直接处理XML,我们可以在XML级别通过相关的XML技术——XSD,XPath, XSLT来操作数据。但是要使我们处理后的XML需要和要求的完全一致,这样的工作无疑是非常枯燥乏味而且费时费力的。而我们最擅长的就是使用.NET对象来封装我们的数据。如何使我们创造的对象能够有效地转化成结构化的XML Infoset,就是今天我们要讲的内容——Serialization。
| 共3页: 1 [2] [3] 下一页 | ||
|
|
||||
| · Linux——从菜鸟到高手 · 微软出价446亿美元收购.. · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 微软Forefront企业安全.. · 如何优化IT 控制能耗 · 国际文档格式标准开战 · CISSP认证成长之路 |
· 珊瑚虫QQ作者侵权案开庭 · Windows Server 2008专.. · 隐私保护技术探讨 · 贝恩资本携手华为22亿.. · 802.11n:下一代的无线.. · 体验Visual Studio 200.. · 运营商封堵非法ADSL共享 · ADSL应用面面俱到 |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · SQL Server 2008/2005.. · RAID——磁盘阵列基础 · 中间件应用技术专题 · 深入了解PGP加密技术 |
· MySQL数据库备份 · 病毒查杀专题 · VPN技术 · Solaris 10 配置管理 · SSL VPN详细知识 · Linux防火墙 · 打造安全服务器 · Sniffer安全技术从入门.. |
|||
|
||||
| · VPN技术 · SQL Server 2008/2005.. · 中间件应用技术专题 · SQL Server 2008/2005.. · SOA 面向服务架构 · 子网掩码教程 · MySQL数据库备份 · RAID——磁盘阵列基础 |
· 身份认证技术 · 病毒查杀专题 · 清除流氓软件——51CTO.. · SSL VPN详细知识 · Sniffer安全技术从入门.. · VPN技术 · SOA 面向服务架构 · 了解统一威胁管理(UTM).. |
|||