区分WCF与WebService的异同、优势
首先对wcf与webservice的定义进行概括,接着介绍了wcf的优势,最后就是对wcf与webservice两者的根本区别进行比较,具体内容如下
一、定义
1.webservice:严格来说是行业标准,不是技术,使用xml扩展标记语言来表示数据(这个是夸语言和平台的关键)。微软的web服务实现称为asp.net web service.它使用soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。wsdl来实现服务接口相关的描述。此外web services 可以注册到uddi中心.供其客户查找使用。 后来微软做了asp.net web service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为wse系列,这个是过度产品,最高到wse3.0.后来就是wcf时代。
2.wcf:其实一定程度上就是asp.net web service,因为它支持web service的行业标准和核心协议,因此asp.net web service和wse能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持xml格式化,而且提供了自己的格式化器)。
但是wcf作为微软主推一个通讯组件或者平台,它的目标不仅仅是在支持和集成web service,因为它还兼容和具备了微软早期很多技术的特性。
根据微软官方的解释,wcf(之前的版本名为“indigo”)是使用托管代码建立和运行面向服务(service oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。wcf是微软分布式应用程序开发的集大成者,它整合了.net平台下所有的和分布式系统有关的技术,如enterprise sevices(com+).net remoting、web service(asmx)、wse3.0和msmq消息队列。以通信(communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 internet;以宿主程序而论,可以以asp.net,exe,wpf,windows forms,nt service,com+作为宿主(host)。wcf可以支持的协议包括tcp,http,跨进程以及自定义,安全模式则包括saml, kerberos,x509,用户/密码,自定义等多种标准与模式。也就是说,在wcf框架下,开发基于soa的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了wcf,就相当于掌握了叩开soa大门的钥匙。
二、wcf的优势
1、统一性 前面已经叙述,wcf是对于asmx,.net remoting,enterprise service,wse,msmq等技术的整合。由于wcf完全是由托管代码编写,因此开发wcf的应用程序与开发其它的.net应用程序没有太大的区别,我们仍然可以像创建面向对象的应用程序那样,利用wcf来创建面向服务的应用程序。
2、互操作性 由于wcf最基本的通信机制是soap(simple object access protocol 简易对象访问协议),这就保证了系统之间的互操作性,即使是运行不同的上下文中。这种通信可以是基于.net到.net间的通信,如下图所示: 可以跨进程、跨机器甚至于跨平台的通信,只要支持标准的web service,例如j2ee应用服务器(如websphere,weblogic)。应用程序可以运行在windows操作系统下,也可以运行在其他的操作系统,如sun solaris,hp unix,linux等等。如下图所示:
3、安全与可信赖 ws-security,ws-trust和ws-secureconversation均被添加到soap消息中,以用于用户认证,数据完整性验证,数据隐私等多种安全因素。 在soap 的header中增加了ws-reliablemessaging允许可信赖的端对端通信。而建立在ws-coordination和ws- atomictransaction之上的基于soap格式交换的信息,则支持两阶段的事务提交(two-phase commit transactions)。
上述的多种ws-policy在wcf中都给与了支持。对于messaging而言,soap是web service的基本协议,它包含了消息头(header)和消息体(body)。在消息头中,定义了ws-addressing用于定位soap消息的地址信息,同时还包含了mtom(消息传输优化机制,message transmission optimization mechanism)。
4、兼容性 wcf充分的考虑到了与旧有系统的兼容性。安装wcf并不会影响原有的技术如asmx和.net remoting。即使对于wcf和asmx而言,虽然两者都使用了soap,但基于wcf开发的应用程序,仍然可以直接与asmx进行交互。
三、更本区别
wcf 支持多种通信协议 http/https 、tcp/udp、msmq、命名管道、对等网、消息可达性、事务流等。
wcf 可以与asp.net 集成、共享一个上下文(httpcontext)。
wcf 支持多种消息传输格式 :text,binary,mtom,json 等。
wcf 安全性要强:支持对称安全、非对称安全、消息安全、传输安全、ssl 流安全、windows 流安全等。
wcf 支持多种会话模式:单向、双向、请求/响应。
wcf 支持rest 。
wcf 支持多种格式化方式。datacontractserializer、xmlserializer、 datacontractjsonserializer 等。
wcf 支持 was hosting、windows 服务 hosting、self-hosting、iis hosting 等。
wcf 支持多种并发模式:单例、单调、会话 。
以上就是本文的全部内容,希望对大家的学习有所帮助。
上一篇: C#实现多选项卡的浏览器控件