哪种类型的 Web 服务最适合 iOS?

2022-08-30 20:32:10

我将为iPhone和iPad创建一个内部应用程序,该应用程序将跟踪销售电话,相关的报价,照片和这些报价的图纸。我仍处于概念设计阶段,我正在尝试阅读我的应用和 Web 服务之间进行通信的不同方式。显然,由于这将主要用于3G或...Edge 我想要一个高效的协议,所以我的直觉反应是远离基于 XML 的东西,如 XML-RPC 或 SOAP。我想在服务器上使用PHP和MySQL,并计划在iOS上使用Core Data。

所以我有几个具体的问题:

  1. 我应该使用什么方案来表现?
  2. 我应该使用什么方案来简化在服务器上的工作?
  3. 我应该使用什么方案来简化在iOS上的使用?
  4. 考虑到整个项目,我应该使用什么方案?
  5. 尽管有网络开销,使用基于 XML 的方案是否更好?为什么?

答案 1

鉴于你问多个问题的方式,你可能会意识到你使用的最终解决方案将是相互竞争的目标之间的平衡行为。

1:您需要更好地定义“性能”。我假设您指的是网络传输时间,这意味着保持较低的服务器延迟和较低的传输字节数。最终可能是自定义的二进制线协议,该协议还经过了可压缩性和压缩分析,并在适当的时候应用了压缩(例如重复的字符串或序列)。这种协议的缺点是,在服务器和客户端上编码可能会更加困难,因为您将无法使用SDK支持标准化编码,除非经过深思熟虑设计的二进制协议往往难以支持应用程序的未来更改和扩展。

此外,您应该考虑如何定义协议的事务,即使使用有效的编码,如果您的协议需要多次往返,而不是单个往返,您仍然会很慢。

最后,根据您发送的数据的大小,与数据的大小相比,编码的开销可能无关紧要。

我建议坚持使用标准化的编码格式,该格式可以通过库支持进行解析,这将该领域缩小到两个主要语法:XML或JSON。

2:XML和JSON在服务器框架中都得到了很好的支持。在使用 XML 服务时,我建议使用 REST 样式模式,因为它们通常很容易构建,并且您不必使应用程序符合其他人的样式。

即使构建基于 SOAP 的 Web 服务可能得到很好的支持(尤其是在 Windows 平台上),我也会远离,因为在移动客户端上进行基于 SOAP 的完整解析的复杂性很高,并且在那里没有得到很好的支持。我不认为WSDL编译器自动生成的对象序列化在编码时可以节省时间,通常很容易序列化为REST样式的XML,或者对于JSON来说通常更简单。

3:iOS支持内置的SAX样式XML解析器,并且有各种类库可用,支持具有不同功能和速度级别的内存中DOM实现。选择最适合您需求的一个。我个人更喜欢TBXML,它速度快,相当轻量级,易于编程,但由于它不验证模式并且它是内存中的树,因此在某些情况下不合适。这是iOS XML库性能的枪战

有几个JSON库可用于iOS,如果你谷歌四处走动。或者看看这个答案

SOAP 没有得到很好的支持,并且库选择有限。您始终可以手动解析服务器生成的 SOAP 响应,但对于服务器端的更改(例如,不同的命名空间前缀)可能会破坏硬编码的 XML 解析器,这些更改是很脆弱的。

4:如果不更多地了解项目的细节,很难回答,但我倾向于JSON或简单的基于XML的编码,因为:两者通常都很容易在客户端和服务器上编程,两者都可以在网络上以合理的效率完成,并且可能在未来的应用程序迭代中扩展。

JSON的优点是解析起来更简单,可以不那么冗长,并且可能更容易为其他目的重新分配任务,例如在服务之上构建Ajax Web客户端。

5: XML vs JSON vs. other encodes?我认为这是个人偏好。XML可以比JSON更具自我描述性,但可能需要更多的工作来解析。JSON 可以降低原始字节的开销,并且易于解析。同样,编码开销可能很大,或者可以忽略不计,具体取决于内容的大小。您也可以在任何情况下应用外部压缩。


答案 2

更新:iOS5现在包括新的NSJSONSerialization类的内置JSON支持。您可以在此处阅读有关在iOS5中使用JSON的教程:

http://www.raywenderlich.com/5492/working-with-json-in-ios-5


推荐