iPhone和Web服务:REST vs SOAP

12
我已经开始了我的学位项目,一个适用于iPhone、Android和(不久的将来)Symbian的移动应用程序。服务器架构如下:
  • 网站(供“标准”用户使用);
  • 基于TomCat和Axis2的Web服务(用于移动连接);
  • mySQL数据库存储用户数据。
在网上搜索时,我阅读了很多关于iPhone和Web服务交互的讨论,我必须说我还不清楚我能做什么和不能做什么。 让我们从用于从数据库检索数据的协议开始:Android端应用程序使用SOAP协议,我能在iPhone上做同样的事情吗?有哪些限制或问题?
我也读到了关于使用REST而不是SOAP的文章,结合上述服务器架构,这可能是可行的吗?主要优缺点是什么?
抱歉,如果这些问题听起来很“新手”,但这是我第一次真正接触iPhone,网络上的大量信息让我感到困惑,我害怕混淆。请原谅任何错误。
4个回答

10

SOAP在移动通信中过于繁重。为什么要花更多的功夫来将请求封装在额外的XML层中,而后还需要解析?这样会发送比实际需要更多的数据,给客户端和服务器带来更大的CPU负担。

使用REST。如果你正在进行跨平台项目,则JSON是一个很好的有效载荷容器,否则plist对于从服务器发送数据也很有效。


SOAP 不仅仅是 XML。它也可以使用 Fast Infoset,它针对带有带宽限制的小型设备进行了优化,并受到许多供应商的支持,例如 Microsoft .NET 和 .NET CF、Sun GlassFish、BEA WebLogic、IBM SDK for Java 6.0 等等。详见 http://en.wikipedia.org/wiki/Fast_Infoset。 - mjn
2
但这只是另一层,它并没有消除SOAP固有的包装特性。SOAP的真正问题在于,你最终会在一个已经具备使用SOAP所能实现的任何功能的协议(HTTP)之上使用它(尤其是大多数库支持的SOAP子集)。对于REST的等效物是简单地在服务器上启用GZIP压缩,双方不需要做其他任何事情。是的,SOAP也可以用于其他协议,但在实践中,它几乎从未被使用,特别是在访问Web服务的99%的小型设备中肯定不会使用。 - Kendall Helmstetter Gelner

4
你可以在iPhone上进行SOAP,这是一个基于HTTP协议的方法,而且你有所有必要的库来在iPhone上进行HTTP。这里有一篇关于该主题的好教程nice tutorial
尽管如此,RESTful APIs 比SOAP更简单,所以你可能需要考虑它们。 它们也是基于HTTP的,所以你不会在iPhone上做任何处理时出现问题。如果你使用Java,则在服务器端,您将需要使用JAX-RS来实现该部分。
希望对你有所帮助。

我看了教程并在几天前使用它,但似乎无法在设备上运行。我认为这是因为NSXMLParser没有包含在设备中,所以一个“解决办法”是改用libxml2,但这需要很多额外的代码,并且我相信即使你对其进行注释,结果代码也不易读懂。 - Maury

0

Google Buffers

如果你正在寻找一种跨语言和平台的解决方案,请看看Google Buffers。你可以轻松地将对象序列化以便通过网络传输。

这个问题应该可以帮助你开始使用Objective-C。

JSON

我也曾经在iPhone应用中成功地使用JSON。同样,它相对于Google Buffers来说更简单,而且也是跨语言和平台的。


0

快速信息集的SOAP适用于小型设备:

JAX-WS 2.0及其参考实现同时支持快速信息集和MTOM/XOP。本文包括有关快速信息集与MTOM/XOP的Web服务性能的信息:

http://www.devx.com/xml/Article/35385/1954

Fast Infoset是为带有带宽限制的小型设备进行优化的,被许多供应商支持,如Microsoft .NET和.NET CF、Sun GlassFish、BEA WebLogic、IBM SDK for Java 6.0等。

http://en.wikipedia.org/wiki/Fast_Infoset


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