我已成功使用SOAP服务。
假设有一个Web服务公开了一个返回学生列表的方法。
public Student[] listAllStudents(){
//some code that return Student array
}
使用SOAP将需要以下步骤:
http://127.0.0.1/web/service/location/soap.php?wsdl
使用适当的存根类/接口来调用服务。
Student[] students = theStub.list_All_Students();
使用REST服务将是这样的。
http://127.0.0.1/web/service/student/list?sort=true
作为一名Java程序员,我使用 SOAP 没有问题,因为有为它设计的框架。此外,我只需要知道一个URL 来访问Web服务。
使用 REST 有点令人困惑。我需要知道所有特定网址以及需要传递的查询字符串。从这个角度来看,使用REST非常麻烦。
我的问题:
答案 0 :(得分:10)
REST绝对有用。与您在SOAP中习惯使用的方式相比,这是一种利用Web服务的不同方式。这是一个快速比较:
最后,他们每个人都在服务导向的世界中服务于自己的目的。 SOAP很成熟但很臃肿。 REST相对年轻,但更适合HTTP。它具有巨大的潜力,特别是在实施服务合同标准时。当WADL成熟时,它将提升REST的普及和采用。
很多。以下是一些已知的REST frameworks,其中流行的是JAX-RS,Jersey,RESTEasy和Restlet。
答案 1 :(得分:3)
这是一个非常开放的问题,但REST更具互操作性,更不用说每个查询中的大量元数据使它几乎不重量级。考虑一下你是否必须在javascript中查询SOAP端点,甚至php都可能是一个痛苦的屁股。 SOAP使用契约优先机制,当您想要使用类似c#。
之类的东西时,它非常适合关于第二个问题,是的,您可以使用Jackson(仅适用于JSON),Spring中的RestController或JAX-RS来解析RESTful响应。
答案 2 :(得分:2)
从程序员的角度来看,是的,我认为REST很有帮助。 REST被称为“完全”使用Web,因为它通过使用比以前更多的HTTP方法来解锁Web潜力 - 'GET','POST','DELETE','PUT'。否则我们大多使用'GET'和'POST'。我喜欢这样思考,我们在现实世界中如何使用HTTP与webservice交谈,为什么不利用HTTP提供的功能。直到现在(在使用REST之前)HTTP从程序员的角度来看,只是发送我的数据包并接收我的数据包,这是一个“虚拟”(不要认真对待虚拟)协议。一天好的HTTP来到程序员社区并说“嘿!我确实'删除'和'PUT'。你想通过使用它们来简化你的web服务吗?”
维基百科
REST uses these operations and other existing features of the HTTP protocol.
For example, layered proxy and gateway components perform additional functions
on the network, such as HTTP caching and security enforcement.
SOAP over REST的一个优点是它适用于非无状态协议,如TCP,消息队列。 REST在无状态协议(如HTTP)上运行。因为HTTP更普遍,所以REST似乎主要用于HTTP。
关于你关于REST框架的问题 - 我使用JAX-RS并且听到Jersey都是同样好的选择。
希望这有帮助!
答案 3 :(得分:1)
REST更适合Web应用程序/最终用户应用程序。它更轻巧。它也是为网络设计的。做真正的REST并不是那么简单(你可以搜索一下)。
SOAP更适合后台应用程序/专业人员。 SOAP更重量级/复杂/安全/合同优先/完成/允许管理交易。
从Java开发人员的角度来看,完成这两项工作后,REST更容易实现/集成,这要归功于Jersey和Resteasy等具有JSR-311功能的堆栈。是的,杰克逊是一个很棒的工具。
今天在Twitter上看到:):
如果你讨厌别人,可以在用于SOAP API和瀑布式方法的linkedin上认可它们
晚上8:22·4月13日·iPhone推特
答案 4 :(得分:1)