参考文献:http://social.microsoft.com/Forums/zh-CN/c06420d1-69ba-4aa6-abe5-242e3213b68f/wcf-webservice
之前听许益平 就和我说过,推荐我看看WCF,当时听到这个名词的时候感觉好像非常高深的样子(其实现在也觉得很高深,只不过不像当初那么感觉难以琢磨了) 闲暇的时候 ,学习了一下通信技术。在通信技术中遇到一个很常见的问题,WCF 和Web Service 的区别是什么?当时看到这样的博客,觉得二者可以说是平级的,只是不同的技术平台使用的不同的通信框架而已,直到我的膝盖中了一箭(好吧,直到之前问过王晓,王晓简单的跟我说了下区别)。个人的总结WCF和Web Service 完全不是一个级别的。所以很难做出比较的 这就相当于 化妆技术和 心地善良 虽然都可以提升个人魅力,但是两者并不是同一个级别的。昨天看到MSDN上的这个问题 ,觉得比较严谨。摘来供只是初步涉猎通信的人们学习。
(一)首先来对比介绍一下 WCF 和Web Service 的区(guan)别(xi)
Web Service :
(1)严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术。
(2)它有一套完成的规范体系标准,而且在持续不断的更新完善中。
(3)它使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。
(4)WSDL来实现服务接口相关的描述。
(5)此外Web services 可以注册到UDDI中心.供其客户查找使用。
WCF:
(1)微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。
(二)Web Service 和ASP.NET Web Service有什么关系?
ASP.NET Web Service是微软提供了Web服务的开发框架,属于ASP.NET Framework的一部分,但是支持早起的WS规范。比如SOAP1.1。换句话说就是 Web Service的行业规范在ASP.Net实现的技术就是 ASP.NET Web Service.
(三)WCF与ASP.NET Web Service的区别是什么?
WCF:WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。是微软SOA重要技术框架.
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大门的钥匙.
(四)网上常见的错误认知
以上是很多.NET开发人员容易搞错的问题。面试的时候也经常遇到。而很多新手也会因为初次接触WCF或者Web Service而陷入迷惑的境地,很多资料介绍的也不准确。我甚至和许多许多年开发经验的开发人员讨论这些问题,他们都无法分清二者的区别。相信很多人也被误导。以下是最常见的错误观点:
1.Web Service太旧了;
2.Web Service 就是 ASP.NET Web Service;
3.WCF比Web Service性能好;
4.WCF 比 ASP.NET Web Service快;
5.WCF比Web Service速度快;
6.WCF比Web Service强大;
7.WCF比 Web Service安全;
8.Web Service必将被WCF取代;
9.WCF其实就是Web Service;
10.WCF非常简单,其实没有什么;
根据(一)/(二)/(三)分析以后,就可以知道以上的结论为什么错误了。
不能拿一个技术框架和行业标准作比较,任何对于二者的比较 都是错误的,因为两者根不不在同一个范畴里。就好比不能拿个汽车和交通法规比较一样。这是个误区。
1.Web Service太旧了:框架都版本的差异,功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的。
2.Web Service 就是 ASP.NET Web Service:同样不是一个范畴。前者规范,后者是框架
3.WCF比Web Service性能好:不是一个范畴,
4.WCF 比 ASP.NET Web Service快:不一定,需要特定的限制条件,WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议一样。
5.WCF比Web Service速度快:同样概念不严格。
6.WCF比Web Service强大:WCF确实集成了多种微软的分布式技术,但是这里应该严格说是:WCF比ASP.NET Web Service强大
7.WCF比 Web Service安全:不严格。其次WCF也可以开发完全裸奔的应用程序。
8.Web Service必将被WCF取代;Web Service不会被WCF取代!前者是一套广泛使用的规范。如果说WCF能取代的是ASP.NET Web Service,因为二者都是.NET平台上的技术。
9.WCF其实就是Web Service:WCF在某些情况下不遵守 Web服务规范,也就是可以开发非服务性质的应用。而且不能简单等同。
10.WCF非常简单,其实没有什么:WCF虽然是个服务开发框架,但是如果你深入学习,会发现WCF架构的强大之处。单单是WCF安全这一块已经相当的复杂了。况且还要统一编程模型,兼容和支持许多早期的分布式技术。很多人轻易下这样的结论,一定是仅仅看了一些文章或书籍,不一定写过代码。高手不会这样武断地下结论。
看了这个文章,希望你对于WCF和WebService有个透彻的理解
而不会再产生这样的疑惑。
无论是参加面试,作为候选人,还是面试官,弄清楚这些基础的问题,相当的必要。不要忽悠别人,也不要被别人忽悠。
技术人员应该坚持严谨的学习态度。~
呵呵,希望对大家的学习有帮助~