代码之家  ›  专栏  ›  技术社区  ›  Piotr Czapla

YAML/JSON/XML:在IPhone上选择哪一种通过RESTFul协议进行通信?

  •  3
  • Piotr Czapla  · 技术社区  · 15 年前

    我正在编写一个与外部服务器通信的简单应用程序。 服务器当前支持yaml、xml和json。

    • 哪个有更好的支持?
    9 回复  |  直到 9 年前
        1
  •  5
  •   Jim Ferrans    15 年前

        2
  •  3
  •   Adrian Kosmaczewski    15 年前

    我为iPhone OS 3.0创建了一个开源应用程序,展示了如何使用REST&iPhone应用程序中的SOAP服务,使用XML(使用8个不同的iPhone库)、SOAP、JSON(使用SBJSON和TouchJSON)、YAML、Protocol Buffers(Google序列化格式)甚至PHP示例应用程序中的CSV(包含在项目中)。

    http://github.com/akosma/iPhoneWebServicesClient

    该项目的模块化程度足以支持未来的许多其他格式和库。

    http://www.slideshare.net/akosma/web-services-3439269

    基本上,我在测试中发现,二进制Plists+REST+JSON和XML+TBXML库是“最佳”选项(意思是:易于实现+反序列化速度+最低负载大小)。

    在Github项目中有一个“results”文件夹,其中有一个Excel表,汇总了结果(还有所有的原始数据)。你也可以在3G或wifi中自己启动测试,然后将测试结果邮寄给自己进行比较和研究。

        3
  •  2
  •   Nick Veys    15 年前

    使用 json-framework ,使类与JSON进行互操作是非常容易的。

        4
  •  1
  •   mr-sk    15 年前

    如果您想使用XML,请使用plist,因为它在iphone上是本机支持的。

    这还取决于你的服务器支持什么媒体类型-顺便说一句,REST并不是一个真正的协议。

        5
  •  1
  •   mythz    15 年前

    http://www.servicestack.net/benchmarks/NorthwindDatabaseRowsSerialization.1000000-times.2010-02-06.html

    基本上,如果您使用.NETWeb服务开发,那么您将在负载大小与性能之间做出妥协,除非您使用另一个序列化程序。

    Marc的protobuf网络显示了最小和最快的实现:

    • 比MS最快的Xml序列化程序快6.72倍,小4.68倍;和

    虽然是二进制协议,但调试起来可能更困难。

    如果您使用MonoTouch(即iPhone的C#/Mono)进行开发,并且希望使用基于文本的格式,那么您可能会对我的 Javascript-like type serializer 它已经针对大小和速度进行了优化,与可用的XML和JSON选项相比,它还显示出了适度的优势,即:

    • 比XML DataContract序列化程序快3.5倍,小2.6倍;和

    下面是一个MonoTouch教程,演示如何从iPhone调用web服务: http://www.servicestack.net/monotouch/remote-info/

        6
  •  1
  •   vizionary    15 年前

    你能接受一个 在你的iPhone项目库,那么请看一看 yaml cpp公司 :

    http://code.google.com/p/yaml-cpp/

    1. 具有本机iPhone支持(通过其cmake构建系统)
        7
  •  0
  •   Kirzilla    15 年前

        8
  •  0
  •   Kendall Helmstetter Gelner    15 年前

    我没有看到任何YAML库(尽管这并不意味着没有)。我知道TouchJSON工作得很好,至少还有一个。

    JSON比XML或PLIST feed占用更少的空间,但是需要提前考虑一下以获得正确的结构。

    pLists的一个很好的方面是,可以将日期作为对象返回,而无需解析。如果您在JSON中传递日期,请确定一种格式,并在任何地方使用相同的格式。NSDateFormatter不是线程安全的,因此如果要使用单个日期格式化程序来节省资源,则必须为每个线程创建一个实例。

        9
  •  0
  •   user177800 user177800    15 年前