代码之家  ›  专栏  ›  技术社区  ›  jamone

什么类型的Web服务最适合iOS?

  •  20
  • jamone  · 技术社区  · 15 年前

    所以我有几个特别的问题:

    1. 为了便于在服务器上使用,我应该使用什么方案?
    2. 考虑到整个项目,我应该采用什么方案?
    3. 尽管存在网络开销,但使用基于XML的方案是否更好?为什么?
    2 回复  |  直到 15 年前
        1
  •  39
  •   Community CDub    8 年前

    考虑到你问了多个问题的方式,你可能意识到你使用的最终解决方案将是在相互竞争的目标之间进行平衡。

    1:你需要更好地定义“绩效”。我假设您指的是网络传输时间,这意味着保持服务器延迟较低,传输的字节数较低。ultimate可能是一个定制的二进制有线协议,它还被分析了可压缩性,并在适当的情况下应用了压缩(例如,重复的字符串或序列)。这种协议的缺点是,在服务器和;客户端,因为您将无法使用SDK支持标准化编码,并且除非经过深思熟虑的设计,否则二进制协议对于支持应用程序的未来更改和扩展来说往往是脆弱的。

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

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

    我建议坚持使用标准化的编码格式,这种格式可以通过库支持进行解析,从而将字段限制为两种主要语法:XML或JSON。

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

    尽管构建基于SOAP的web服务可能会得到很好的支持(特别是在Windows平台上),但我还是会远离这些服务,因为在移动客户端上执行完全基于SOAP的解析的复杂性很高,而且在那里没有得到很好的支持。我不认为WSDL编译器自动生成的对象序列化在节省编码时间方面有那么大的优势,它通常很容易序列化为REST样式的XML,或者对于JSON更简单。

    3:iOS支持内置的SAX风格的XML解析器,并且有各种类库支持具有不同特性和速度级别的内存DOM实现。挑一个最适合你需要的。我个人更喜欢TBXML,它速度快、相当轻量级、易于编程,但因为它不验证模式,而且是内存树,所以在某些情况下不合适。 Here is a shootout iOS XML库性能的影响。

    如果你到处搜索,有几个JSON库可用于iOS。或者 look in this answer .

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

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

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

    推荐文章