WCF与Web Service的区别

转载 2012年03月30日 15:39:50

WCF与 Web Service的区别是什么? 和ASP.NET Web Service有什么关系? WCF与ASP.NET Web Service的区别是什么?

这是很多.NET开发人员容易搞错的问题。面试的时候也经常遇到。而很多新手也会因为初次接触WCF或者Web Service而陷入迷惑的境地,很多资料介绍的也不准确。我甚至和许多许多年开发经验的开发人员讨论这些问题,他们都无法分清二者的区别。相信很多人也被误导。以下是最常见的错误观点:

Web Service太旧了; Web Service 就是 ASP.NET Web Service; WCF比Web Service性能好; WCF 比 ASP.NET Web Service快; WCF比Web Service速度快; WCF比Web Service强大; WCF比 Web Service安全; Web Service必将被WCF取代; WCF其实就是Web Service; WCF非常简单,其实没有什么;

等等结论。这些观点我相信很多人都听说或接触过。后面我们会详细分析每个观点的错误的原因。以后大家在学习和面试中也好有个参考。

——————————————————————————————————————–

下面有个类似的问题是来自于WCF中文论坛,引用ymq: 
不错 
以前用web service用的比较多,基本熟悉了,最近接触到WCF,也许是刚接触的原因,感觉怎么比 web service 复杂的多,优点好像也不是很明显 。。。。。 
谢谢,我曾经在WCF中文技术论坛里和他们讨论过一个问题。

——————————————————————————————————————–

下面我们来详细讨论一下二者的区别。Web Service和WCF的到底有什么区别。

【1】Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架,也不是技术。

       它有一套完成的规范体系标准,而且在持续不断的更新完善中。

       它使用XML扩展标记语言来表示数据(这个是夸语言和平台的关键)。微软的Web服务实现称为ASP.NET Web Service.它使用Soap简单对象访问协议来实现分布式环境里应用程序之间的数据交互。WSDL来实现服务接口相关的描述。此外Web services 可以注册到UDDI中心.供其客户查找使用。 
     后来微软做了ASP.NET Web Service的安全,性能,数据加密、解密,托管宿主等多方面的扩展,称为WSE系列,这个是过度产品,最高到WSE3.0.后来就是WCF时代。(WCF分布式开发必备知识(4):Web Service )

【2】ASP.NET Web Service:微软提供了Web服务的开发框架,属于ASP.NET Framework的一部分,但是支持早起的WS规范。比如SOAP1.1。 
【3】WCF:WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。

        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学习系统化一些,必须向对如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ消息队列也有个详细的认识的话,你可以看看我的博客,在此之前我对WCF学习相关的知识都系统的进行了整理。这个是文章目录:老徐的博客:文章目录 。 
还有一点就是,很多人对WCF学习感兴趣,当初我也是,直接奔WCF而来,其实在后来的学习中感觉吃力,因为WCF宣称的很多特性和优势,我们无法理解,更无法体会。文中提到了很多微软的早期技术如果都没有接触过,这些对比我们就无法有深刻的体会。

【4】结论:

   那么我们看了这些分析以后,就可以知道以上的结论为什么错误了。

不能哪一个技术框架和行业标准作比较,任何对于二者的比较 都是错误的,因为两者根不不在同一个范畴里。就好比不能拿个汽车和交通法规比较一样。这是个误区。

Web Service太旧了:框架都版本的差异,功能特性上却是有新旧之分,但是对于特定的系统,适合自己的就是最好的。 Web Service 就是 ASP.NET Web Service:同样不是一个范畴。前者规范,后者是框架 WCF比Web Service性能好:不是一个范畴, WCF 比 ASP.NET Web Service快:不一定,需要特定的限制条件,WCF使用BasicHttpBinding的时候与ASP.NET Web Service协议一样。 WCF比Web Service速度快:同样概念不严格。 WCF比Web Service强大:WCF却是集成了多种微软的分布式技术,但是这里应该严格说是:ASP.NET Web Service WCF比 Web Service安全:不严格。其次WCF也可以开发完全裸奔的应用程序。 Web Service必将被WCF取代;Web Service不会被WCF取代!前者是一套广泛使用的规范。如果说WCF能取代的是ASP.NET Web Service,因为二者都是.NET平台上的技术。 WCF其实就是Web Service:WCF在某些情况下不遵守 Web服务规范,也就是可以开发非服务性质的应用。而且不能简单等同。 WCF非常简单,其实没有什么:WCF虽然是个服务开发框架,但是如果你深入学习,会发现WCF架构的强大之处。单单是WCF安全这一块已经相当的复杂了。况且还要统一编程模型,兼容和支持许多早期的分布式技术。很多人轻易下这样的结论,一定是仅仅看了一些文章或书籍,不一定写过代码。高手不会这样武断地下结论。

WCF绝对是值得学习的一门技术,并且如果深入研究后会发现,它真的不简单。


转自:http://www.cnblogs.com/xiurui12345/archive/2012/03/30/2425445.html

WCF、WebAPI、WebService之间的区别

Web Service 1、它是基于SOAP协议的,数据格式是XML 2、只支持HTTP协议 3、它不是开源的,但可以被任意一个了解XML的人使用 4、它只能部署在IIS上  W...
  • u013043518
  • u013043518
  • 2016年06月30日 20:47
  • 2953

WCF发布Web Service. 写的比较好~

一、概述   Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。...
  • pandf
  • pandf
  • 2014年04月08日 16:13
  • 1233

WCF与Web API 区别(应用场景)

如果服务需要在http协议上,并且希望利用http协议的各种功能, 如果服务需要被各种客户端(特别是移动客户端)调用,选择Web?API ?应用场景: 1.SOAP?Services:这是因为W...
  • admindong
  • admindong
  • 2016年09月13日 20:13
  • 1027

WCF基础教程(二)——解析iis8和iis8.5+VS2013发布wcf服务问题

引言   在项目中第一次接触WCF这方面的知识的时候就非常的喜欢这个东西,说不上为什么, 就是感觉WCF的出现为我们提供了很大的便利,所以自己就开始查找这方面的资料开始来 学习,所自己现在也是...
  • u013045437
  • u013045437
  • 2015年08月08日 21:40
  • 1589

关于封装Dll为Web Service技术方案的讨论

关于web架构技术方案的讨论整理 Sonictl 2014年1月25日10:05:52   本着“三人行必有我师”的学习态度,我在近期跟x老师做了大量沟通,结合我们单位对于“xxx”项目的推进情况,整...
  • sonictl
  • sonictl
  • 2014年01月25日 11:52
  • 1748

简单五步创建一个WCF Rest Service

前言:所使用的VS版本为
  • zhangjk1993
  • zhangjk1993
  • 2014年07月18日 15:58
  • 11316

WCF 的 Web 访问方式

  • lovenjoy
  • lovenjoy
  • 2013年04月11日 14:11
  • 1453

关于WCF服务的使用(非常详细的步骤)

WCF是.NET提供的一种服务,可以将自己写的程序(完成特定功能,比如从数据库中读取数据操作等)分装成服务以后,发布到服务器上。然后会生成一个网址,客户端在编程的时候,可以引用这个服务,使用这个服务中...
  • fynjy
  • fynjy
  • 2015年07月14日 10:50
  • 5375

WCF和ASMX WebService的区别是什么

最基本的区别在于,ASMX或者ASP.NET WebService是用来通过基于HTTP的SOAP来实现通讯。但WCF可以使用任意协议(HTTP,TCP/IP,MSMQ,NamedPipes等),消息...
  • XMM_1030
  • XMM_1030
  • 2013年08月02日 16:59
  • 2012

WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务

在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源。下面来介绍如何创建一个 OData 服务。在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se...
  • dyllove98
  • dyllove98
  • 2013年07月04日 20:39
  • 6971
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WCF与Web Service的区别
举报原因:
原因补充:

(最多只允许输入30个字)