Rest与Wcf的优缺点比较

31

使用REST服务与WCF服务相比,有哪些利弊呢?

我正在考虑使用哪种类型,并且有兴趣找到一些比较。


1
可能是REST和SOAP的重复问题。 - John Saunders
1
对于那些在2014年看到这个问题的人:http://www.dotnet-tricks.com/Tutorial/webapi/JI2X050413-Difference-between-WCF-and-Web-API-and-WCF-REST-and-Web-Service.html - Abhijeet
3个回答

35

Rest是一种在互联网上进行通信的方式。它是一个基本流程,通过选择地址作为方法位置并返回HTML标准数据(当然包括JavaScript、CSS和HTML)来实现。

WCF是一个 .NET 库,用于使用 SOAP 让两个程序之间进行通信。其中包含两个非常熟悉的程序交换类信息。

鉴于 Rest 是一个过程,而 WCF 是一个类库,更好的问题可能是“Rest vs Soap”。

总之,如果需要让两个应用程序进行通信,你可能需要使用 WCF。即使这些应用程序不都是使用 .NET 编写。但是,如果需要通过 Web 技术访问信息(通常使用 JavaScript 访问),则需要使用 Rest。

顺便提一下,WCF 也很好地支持 Rest,所以你真的不会错。


4
我不太喜欢这里的第一段。您可以返回任何可能包含js、html或css代码的任意资源。 - Balázs Németh

13
您正在询问有关苹果和橙子的问题。REST是用于创建Web服务的模式。我并非专家,但您可以在维基百科上找到大量详细信息。WCF是用于创建Web服务的Microsoft技术(主要使用SOAP,尽管它的可配置性非常高,因此您也可以在其上执行REST - 请参见ASP.Net WebAPI)。
WCF的优点:
  1. 高度可配置 - 如果您能想象到它,WCF可能都能做到。
  2. 如果您坚持使用Microsoft堆栈,则易于使用。Visual Studio会为您完成90%的工作。
WCF的缺点:
  1. 高度可配置 - 有时可能需要费些功夫才能使其完全符合您的要求,特别是如果您是新手。
  2. 不同技术堆栈之间进行通信可能存在一些问题。我听说过Java服务在指向WCF服务时崩溃。就我所知,这是Java库的问题,而不是WCF的问题,但谁能确定呢。
这就是我现在所能想到的,但希望这能给您留下一个良好的WCF印象。

2
在 ASP.Net WebAPI 之前,您可以使用非常少的配置创建 WCF REST 服务... 搜索 System.ServiceModel.Activation.WebServiceHostFactory。 - Gern Blanston
ASP.NET Web API现在不再真正使用WCF了。 - Darrel Miller

7
如果您确定HTTP协议是要使用的协议,并且想将其作为“应用程序”协议而不仅仅是“传输”协议,则可以考虑使用类似于ASP.NET Web API的东西。
如果您正在构建一项服务,使您的数据中心中的服务器相互通信,则应认真考虑使用WCF。
是否采用REST是完全不同的问题。这个服务会持续很多年吗?它将拥有许多不同的客户端吗?其中一些客户端可能超出您的控制范围?如果是,则值得调查REST约束所带来的好处。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接