现在的位置: 首页 > 综合 > 正文

转贴关于wcf

2012年10月27日 ⁄ 综合 ⁄ 共 2446字 ⁄ 字号 评论关闭

Windows Communication Foundation:支持面向服务的应用程序

无论是通过工作流还是其他方式开发,绝大多数应用程序都需要与其他应用程序进行通信。近几年来,应用程序间的通信技术发展迅速。在长达数十
年的不统一之后,主要供应商之间最终达成了一致的应用程序通信协议。根据 SOAP 这一全球 Web 服务协议,基于 J2EE、.NET
Framework 等不同技术平台开发的应用程序间的互操作性相比以前大为简化。它还会使面向服务的架构这一思想为更多的组织接受。

当然,现在的通信方式已经不少了。以 .NET Framework 2.0 为例,您可以选择以下几种通信方式:

•ASP.NET Web 服务,提供基于 SOAP 的交互通信。

•.NET Remoting,主要用于 .NET 应用程序之间的通信。

•Enterprise Services,支持可扩展的事务性应用程序。

•System.Messaging,通过 Microsoft Message Queuing (MSMQ) 支持队列消息。

•Web Services Enhancements (WSE),它是 ASP.NET Web 服务的扩展,支持 WS-Security 等新规范。

这些技术都有其自身的价值,在实际应用中也有着各自的地位。可是,既然问题是一样的,为什么要采用好几种不同的解决方案呢?为什么不根据交互服务来建立一个单一的应用程序通信基础?

这正是 Windows Communication Foundation (WCF) 的设计初衷。有了
WCF,开发人员不必再像从前一样,处理每一类通信都要使用到不同的应用程序编程接口技术 - WCF (最初的代号为“Indigo”)以通用的
API 提供通用的方法。在 .NET Framework 3.0 环境下,大多数使用上述技术之一的应用程序将会代而使用 WCF。

WCF 通过 SOAP 提供强大的交互通信支持,这是现代计算机设备的基本要素。它还支持多项 WS-* 规范,如
WS-Security、WS-ReliableMessaging 和 WS-AtomicTransaction。WCF 不需要
SOAP,但是可能会使用其他方法,包括优化二进制协议、MSMQ 队列消息 和基于 REST 的简单通信。WCF
同样采取明确的面向服务方法来进行通信。WCF
不会在对象间进行透明通信,而是为通信各方提供略微不同的抽象服务。其结果之一就是放开了分布式对象系统间某些紧密的耦合关系,使得交互出错减少,并且更
容易修改。

-------------------------------------------------

在Microsoft提出.NET战略以来,
先后推出了一系列产品和技术, 这些产品和技术为我们在.NET平台下建立企业级的分布式应用提供了很大的 便利。这些技术和产品包括:.NET
 Remoting,XML WebSerivce,WSE(2.0,3.0),Enterprise Service, MSMQ ......

我们知道,和一个相对独立的应用不同,我们开发
一个分布式应用, 尤其是开发一个企业级的分布式应用, 我们需要考虑较多的东西。比如我们要考虑数据在不同的应用之间传递时采取什么样的机制,
这种数据传递是否是安全的,可靠的;如何在分布式的环境下进行异常处理;如何把分别在 不同应用中执行的操作纳入同一个事务……

对于我们上面提到的这些 问题,
这些都是开发分布式应用考虑的典型的问题。值得庆幸的是,Microsoft开发的分布式的产品能够部分的解决这些问题。.NET Remoting
为我们在.NET平台下提供了非常好的解决方案(我个人认为,.NET
Remoting是.NET平台下最为成熟的分布式技术。比如相较于另一个使用更为广泛的技术XML Web
Service,它具有一些自己独特的特性:可以使用不同的传输层协议进行通信——Http &
TCP;可以使用不同的消息编码方式——Bianry & Text (XML);可以寄宿到IIS和任何一种托管的应用下
——Console Application 、WinForm Application、 Windows
Service……;Server端可以通过双向通信回调(Callback)客户端的操作;……)XML Web
Service为使我们实现跨平台的系统能够集成显得如此简单。随着技术的不断发展,相关的技术规范(WS-*
Specification)不断完善, XML Web Service现在已经成为使用最为广泛的分布式技术了。XML
Web Service能够得到如此广泛的推广,这得得益于Microsoft先后两次推出的Web Service Enhancement
(WSE 2.0 、WSE 3.0)。如果没有WSE, 单纯的asmx下的如此的担保和不可靠。WSE为Web
Service解决了几大难题:Security、Reliable Messaging、transaction
Handling以及大数据的有效传输。 MSMQ作为一种简单而有效的机制为不同应用之间数据的传递提供了保障。

其实,通过合理利用上面这些分布式的技术完全可
以为我们建立的一套适合不同层次需要的分布式构架。但这里面仍然存在一些问题,那就是上面这些技术和产品只能解决某一方面的问题; 比如.NET
Remoting虽然在.NET平台下是一个很好的依靠, 但是考虑到他不能提供不同平台之间的互操作性。另外,这些技术适合用了完全不同的编程方式,使
得我们很难从容地从其中一种转移到另一种上来。基于这些原因, 我们需要一套全新的技术整合以上都这些技术, 于是我们有了今天的WCF——
Windows Communication
Foundation。WCF建立一套框架,是我们通过一致的编程模式,使用不同的技术构建我们的分布式应用。 

虽然很早开始接触WCF,但所学的总是零零碎碎。现在开始系统地研究WCF,希望与大家一同分享我的一些所得, 同时希望能通过这样的一个机会与大家一些探讨WCF,不对的地方希望大家指正。

抱歉!评论已关闭.