【问题标题】:[iPhone and Web Services]: REST vs SOAP[iPhone 和 Web 服务]:REST 与 SOAP
【发布时间】:2010-12-23 23:25:26
【问题描述】:

我已经开始了我的学位项目,这是一个适用于 iPhone、Android 和(在不久的将来)Symbian 的移动应用程序。服务器架构如下:

  • 网站(适用于“标准”用户);
  • Web 服务(用于移动连接),基于 TomCat 和 Axis2;
  • mySQL DB 用于存储用户数据。

在网上冲浪时,我阅读了很多关于 iPhone 和 Web 服务之间交互的讨论,我不得不说我不清楚我能做什么,不能做什么。 让我们从用于从数据库中检索数据的协议开始:Android 端应用程序使用 SOAP 协议,我可以在 iPhone 上做同样的事情吗?是否存在一些限制或问题?

我还阅读了有关使用 REST 而不是 SOAP 的信息,是否可以使用上述服务器架构?主要优点/缺点是什么?

很抱歉,如果这些问题听起来“n00b”,但这是我第一次使用 iPhone 的真实体验,在网上找到的大量信息让我心烦意乱,我害怕被混淆。如有错误请见谅。

【问题讨论】:

    标签: iphone web-services web-applications rest soap


    【解决方案1】:

    您可以绝对在 iPhone 上执行 SOAP。这是关于该主题的nice tutorial。毕竟,SOAP 是一个基于 HTTP 的协议,您拥有在 iPhone 上执行 HTTP 所需的所有库。

    话虽如此,RESTful APIsSOAP 更简单,因此您可能需要考虑它们。它们也是基于 HTTP 的,因此您在 iPhone 上执行此操作不会有任何问题。在服务器端,如果您使用 Java,则必须使用 JAX-RS 来实现该部分。

    希望对你有帮助。

    【讨论】:

    • 教程看过,前几天用过,但是好像没办法让它在设备上运行。我认为这是因为 NSXMLParser 未包含在设备中,因此“解决方法”是改用 libxml2,但它需要很多额外的行,而且我相信生成的代码不是人类可读的,即使您对其进行评论。跨度>
    【解决方案2】:

    谷歌缓冲区

    如果您正在寻找与语言和平台无关的解决方案,请查看Google Buffers。您可以轻松地序列化对象以通过网络传输。

    question 应该可以帮助您开始使用 Objective-C。

    JSON

    我也成功使用了JSON within iPhone Apps。同样,相对语言和平台无关,但比 Google Buffers 简单得多。

    【讨论】:

      【解决方案3】:

      SOAP 对于移动通信来说实在是太重了。为什么要将请求包装在必须解析的附加 XML 层中?您发送的数据超出了您的需要,并给客户端和服务器带来了更大的 CPU 负担。

      使用 REST。如果你在做一个跨平台的项目,JSON 是一个很好的负载容器,否则 plist 可以很好地从服务器发送数据。

      【讨论】:

      • SOAP 并不意味着 XML。它也可以是 Fast Infoset,它针对有带宽限制的小型设备进行了优化,并得到许多供应商的支持,例如 Microsoft .NET 和 .NET CF、Sun GlassFish、BEA WebLogic、IBM SDK for Java 6.0 等。 en.wikipedia.org/wiki/Fast_Infoset
      • 但这只是另一层,它不会消除 SOAP 的固有包装性质。 SOAP 的真正问题在于,您最终会在协议 (HTTP) 之上使用它,该协议 (HTTP) 已经具有可以使用 SOAP 做任何事情的功能(尤其是大多数库支持的 SOAP 子集)。相当于 Fast Infoset for rest 就是简单的在服务器上开启 GZIP 压缩,双方什么都不做。是的,SOAP 也可以用于其他协议,但在实践中,它几乎永远不会出现在 99% 的访问 Web 服务的小型设备中。
      【解决方案4】:

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

      JAX-WS 2.0 及其参考实现同时支持快速信息集和 MTOM/XOP。本文包含有关 Fast Infoset 与 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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-14
        相关资源
        最近更新 更多