2012-02-29 150 views
25

.net中的WCF服务和Web服务有什么区别
什么时候应该使用WCF以及何时使用Web服务。是否REST和WCF服务相同?谢谢WCF服务与Web服务和REST服务的区别

+0

[WCF vs ASMX web service]可能重复(http://stackoverflow.com/questions/2448472/wcf-vs-asmx-web-service) – 2012-03-14 19:53:02

+0

请花一点时间搜索以前的问题。我只是输入“WCF vs ASMX”,并找到列表顶部的重复。 – 2012-03-14 19:53:30

回答

25

网络服务是一个抽象术语,包含大量用于分布式系统的数据提供者。也许你指的是ASMX网络服务,它仍然可以在野外找到,但现在还没有真正广泛用于新开发。

WCF服务是Microsoft的SOAP实现。还有其他的实现,或者你可以推出自己的(不推荐)。

SOAP是一种基于会话的基于消息的有状态Web服务。如果您的服务被设计为一组复杂的操作,那就太好了。

REST是一种无状态,无会话的基于资源的Web服务。如果您的服务旨在访问数据并对其执行简单的CRUD操作,那就太好了。 SOAP和REST是互斥的。一项服务不能兼而有之。有很多方法可以操纵香草WCF,使其成为RESTful,但这些技术正在被弃用。如果你想实现一个RESTful Web服务,那么微软世界中有两个主要选择:WCF数据服务和ASP.NET Web API。

+3

太单词太强。而且,在WCF中,可以使用REST和SOAP绑定公开相同的服务。 – 2012-03-14 19:54:27

+2

对于REST体系结构,除了无状态的,基于资源的CRUD之外,还有很多其他的东西。两个最关键的组件是内容类型,并使用超文本作为应用程序状态的引擎。 – cdeszaq 2012-03-19 21:03:56

4

这是一个非常广泛的问题......我打算给出一个简要的高级答案,并建议您进行一些更多的搜索,因为已经有很多关于每个主题的信息。但是,希望这会给你一个正确的方向。

首先,通常当人们引用WCF服务和Web服务时,他们指的是使服务调用相当通用的新的WCF约定(它们可以是SOAP,REST等)以及旧的.asmx SOAP Web方法服务。所以,根据这些思路,我会建议更多地关注WCF和SOAP/.ASMX,以了解WCF和旧Web服务的不同之处。

至于WCF和REST,它们是不一样的。 REST更多的是架构,而WCF是一个框架。正如我已经提到的,WCF可以用来进行SOAP调用或REST调用。我不确定我可以添加更多,而不会更详细。

虽然,我会在稍后查看一下REST和WCF上的一些好文章。就个人而言,我没有看到一个理由,甚至追求很久以前的调用Web服务(.ASMX页面)的旧方式,因为WCF几乎已经过时了。但是,学习许多不同的方式来抚摸猫可能是有用的,努力找到最适合你的东西。

同样,这是非常高的水平,但这些都是非常笼统的主题,每个主题都有很多围绕,所以希望高水平的概述能够帮助您更深入地研究每个主题。

+0

_Some_人的意思是“ASMX”,当他们说“Web服务”时。其他人只是使用“Web服务”来表示通用技术,并且认为WCF是目前在.NET平台上创建Web服务的方式。这将包括我。另一种是“ASMX Web服务”,区别于“WCF Web服务”。 – 2012-02-29 18:14:11

+0

@JohnSaunders你是对的,我想我是不会回答这个问题的,因为这是在寻求差异,所以我的想法走上了它的道路。然而,一般来说,你是正确的,大多数人只是指Web服务参考通用技术。 – 2012-02-29 18:16:58

1

WCF是多方面的,所以我将就其最常见的用法进行说明。 WCF和REST服务之间的一般区别在于内容。 REST调用通常是以消息/文档/实体为中心(使用客户实体,找到以M开头的那些实体;对于订单实体,获得订单12并且绑定到HTTP协议.WCF倾向于以操作为中心参数,可以调用得到带参数运行)。WCF还没有绑定到HTTP。

仅供参考,有扩展创建使用WCF基于REST的服务(WebInvoke,WebGet属性)。

+0

WCF和REST之间更大的区别在于一个是框架,另一个是架构。因此,真正比较这两者变得更加困难。这甚至成为WCF可以用来创建RESTful服务的核心,因为可以使用框架来实现架构。 – 2012-02-29 18:20:19

+0

你在这里比较的是SOAP和REST。 – 2012-02-29 18:32:08

+0

我知道这是关于SOAP和REST的更多内容,因此“就其最常见的用法而言”,即SOAP服务。这个问题听起来有点像是可能来自某个新人,但是了解WCF 101级别的概念,并且不想让他超载。 “弃用” – Rich 2012-02-29 18:39:24

9

REST是一个架构

WCF是.NET Framework中用于构建面向服务的连接应用程序的API。

在过去的日子里,作为Web服务开发的功能可以通过互联网访问,并且通过Remoting可以在本地网络上使用。

使用WCF我们不需要开发不同的代码,以便通过互联网和本地网络访问它。只需使用绑定进行配置就足够了。

3

有人说“ASMX”时他们说的是“Web服务”。

其他只是使用“Web服务”来表示通用技术,并且认为WCF是当前在.NET平台上创建Web服务的方式。另一种是“ASMX Web服务”,区别于“WCF Web服务”。

“其他类型”是传统技术,仅支持向后兼容性。他们不应该用于新的发展,所以你没有必要了解他们。

正如其他人所说,“REST”是一种架构风格,而不是技术。

1

Wcf:wcf是一种作为.net框架的一部分的技术,它通过遵循统一编程模型提供了使用不同分布式技术的环境。 wcf创建代理。 wcf支持数据合约序列化。 记录显示xml格式。

**休息:**休息是一种架构风格,它表示以更有效,更高效和更简单的方式使用网络的现有功能。插入,更新和删除等动词。 其余无法创建代理。显示jason格式的其余记录显示为 。

网络服务:在网站上托管的服务称为web服务。 网络服务支持xmlserializer

0

我看到这是一个相当古老的线程,但我最近问了一个类似的问题。

给出的答案具有所有类似的相关性,但在我看来,雷是最接近实际要求的。 在设计或重构基于Web的解决方案时,如果我们使用SOAP或REST,总会遇到问题。答案在于服务背后所需的业务逻辑的复杂性。 REST适用于简单的API调用,这些调用通常包含少量请求的数据或过夜处理大型数据集,但主要针对数据请求。 SOAP更多的是与业务逻辑交互的日常服务。例如许多具有大量参数的方法。

作为我们基于网络的解决方案的一部分,我们所做的是尝试并利用两者。对于内部方法和主要功能,我们使用SOAP,但对于暴露的API,我们更喜欢REST。 框架相关,无论是SOAP还是REST,都将WCF作为首选。