2012-02-15 199 views
1

最近,我不得不编写10行.NET代码来调用REST Web服务。这是非常常规和日常的代码,所以不是一个问题。但是,这让我想知道,对于需要编写几个方法来调用的REST Web服务,有什么好处,而不是像WCF Web服务那样,您只需添加服务引用并具有“API感觉”(即类/方法等)。REST Web服务的好处是什么?

谢谢

回答

1

REST使用HTTP本身作为API;它比其他任何东西都更具风格。熟悉HTTP的人会立即理解设计良好的服务。没有涉及WSDL或SOAP或XML。

我认为它更轻。这对客户来说肯定更容易,因为他们不需要SOAP客户端。一个简单的HTTP连接就可以做到。

好处有比客户更多的事情比开发商。

2

它也拥有更加开放的奢华。任何可以编写的人都可以创建一个链接来创建REST API。我想不出任何更容易获得的东西。

2

REST和SOAP在不同情况下都很棒。我不确定你试图打电话的服务的性质以及服务的位置,但有时候人们说使用通过互联网的RESTful服务,并且在公司内部使用基于SOAP的服务。

你提到:

WCF的Web服务,你只需要添加一个服务引用,并有一个 “API感觉”

假设你的意思是基于SOAP的服务,你说的情况对于VS用户来说也是如此。如果您尝试使用Apple的XCode访问服务,该怎么办?看看this question,看看需要多少代码来替换VS为你在XCode中生成的Stubs

另外通常 RESTful的消息比SOAP消息(看this),这使得它们更有效,当带宽是一个问题(例如,移动电话)的轻量化。

因此,当考虑您正在使用的服务的所有方面时,您将更好地理解为什么使用REST或SOAP。

1

您正在使用.Net工具来处理SOAP服务。假设您使用的是移动设备,浏览器或大型机。那么这个SOAP服务将会变得更加庞大而且可能很难实现。 REST与HTTP密切相关,几乎所有的技术堆栈都支持它,因此它能够接触尽可能多的客户端。这就是为什么在我决定SOAP和REST之间时,我问自己谁会消费这个。如果它只是少数的.Net或其他复杂的客户端,那么SOAP可能没问题,如果我需要最大的覆盖范围,那么REST是一个更好的选择。

1

因为REST按照它的设计方式使用HTTP,所以您可以在几乎任何平台和任何语言上开发客户端。实现服务器也是一样。据认为,许多网站已经是RESTfull。您不必了解所有WS- *的内容,以便能够使用API​​。你可以使用类似cURL的东西来与REST服务进行交互。使用SOAP它要复杂得多。

REST还支持自定义内容类型,因此可以在同一个URL上执行GET(说http://example.com/customers),并通过简单地更改标头获取XML,JSON,CSV或XLS响应。这取决于当然的服务实施。有些人在http://example.com/customers.xmlhttp://example.com/customers.xls这个URL上加了一个扩展名,以达到同样的效果。但底线是您可以直接将流保存到磁盘并使用它。当您将信息发送到服务器时也是如此。您可以将它以原始格式作为XML,JSON,CSV,XLS发送。 SOAP限制了您传输数据的方式和格式。

一个体面的RESTfull服务也是可导航的,这意味着对另一个资源的引用仅仅是我可以访问的链接(类似于HTML)。使用SOAP几乎不可能。

SOAP安全性可能变成一个复杂的野兽。使用REST服务,简单的HTTP身份验证可能已足够,或者您可以使用OAuth和Open ID 2.0。

随着REST可能有更小的有效载荷。这对移动环境和这些应用程序的整体性能非常有用。

如果您通过API获利,您会发现支持API并使您的API可用于最多数量的客户端更为简单。我们销售了基于SOAP服务的产品,并且由于WCF实现SOAP的方式的复杂性以及缺乏支持(通过一些JAVA框架),我们发现它支持起来相当痛苦。

也就是说,REST服务的开发人员确实是真正开放,轻量,简单且易于使用的。有效载荷和URL需要记录得相当好。 WSDL为SOAP做了这些工作,并帮助达成了一些目标。

0

soap数据格式是XML。它的有效载荷大小比Json大得多。你可以谷歌进行性能测试比较B/W JSON和XML。休息不对数据格式施加限制。所有类型的客户端都可以轻松地使用休息。无论是.net客户端还是运行在浏览器中的JavaScript。你也可以从JavaScript调用SOAP服务,但它很单调乏味。 最后我们都想成为牧群的一部分:-)