WCF与 Web Service的区别是什么?各自的优点在哪里呢?

这是很多.NET开发人员容易搞错的问题。面试的时候也经常遇到,初学者也很难分快速弄明白

Web service

.net技术中其实就指ASP.NET Web Service,用的时间比较长,微软其实是想将C#作为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 )

WCF

WCF 是一个分布式应用的开发框架,属于特定的技术,或者平台。既不是标准也不是规范。

WCF服务的公开是需要运行服务的宿主环境的,

WCF的典型宿主包括以下四种:

1、"Self-Hosting" in a Managed Application(自托管宿主)
2Managed Windows ServicesWindows Services宿主)
3Internet Information ServicesIIS宿主)
4Windows Process Activation ServiceWAS宿主)

用的比较多的是23,我们可以建立一个控制台应用程序作为宿主也可以将wcf服务寄宿在IIS上。

WCF具体实现起来比较复杂,让初学者很难快速抓住要领。而ASP.NET Web Service相对而言简单多了

 WCF其实一定程度上就是ASP.NET Web Service,因为它支持Web Service的行业标准和核心协议,因此ASP.NET Web ServiceWSE能做的事情,它几乎都能胜任,跨平台和语言更不是问题(数据也支持XML格式化,而且提供了自己的格式化器)。 
但是WCF作为微软主推一个通讯组件或者平台,它的目标不仅仅是在支持和集成Web Service,因为它还兼容和具备了微软早期很多技术的特性。 
         根据微软官方的解释,WCF(之前的版本名为“Indigo”)是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,如Enterprise Sevices(COM+).Net RemotingWeb Service(ASMX)WSE3.0MSMQ消息队列。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NETEXEWPFWindows FormsNT ServiceCOM+作为宿主(Host)WCF可以支持的协议包括TCPHTTP,跨进程以及自定义,安全模式则包括SAML, KerberosX509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙 。如果你想对WCF学习系统化一些,必须向对如Enterprise Sevices(COM+).Net RemotingWeb Service(ASMX)WSE3.0MSMQ消息队列也有个详细的认识的话,你可以看看我的博客,在此之前我对WCF学习相关的知识都系统的进行了整理。

个人心得:

     本人是先接触webservice后学习wcf的,我也建议大家先从简单的学其,通过建立webservice服务为桌面应用程序提供接口,其数据传输可以是json也可以是xml格式的文本体。熟悉webservice之后(其实这个过程很短)再试着去编写wcf服务接口,这样不仅有个缓急过程,更容易让人理解

个人总结:

      Webservice是一种行业标准,wcf是一个开发技术框架(是.net一个组件,由.NET Framework3.0 开始引入),二者貌似没什么可比性,但是就其效率而言,wcf比同开发平台下的ASP.NET Web Service相对而言高些,WCF虽然是个服务开发框架,但是如果你深入学习,会发现WCF架构的强大之处。单单是WCF安全这一块已经相当的复杂了。况且还要统一编程模型,兼容和支持许多早期的分布式技术。

 

 

 

原文地址:https://www.cnblogs.com/yuxiaohui/p/3209870.html