SOAP,REST或仅用于Objective-C/iPhone与服务器解决方案的XML

Nic*_*oft 4 xml iphone rest soap objective-c

我们将建立一个iPhone从服务器请求数据的解决方案.我们可以选择决定采用何种解决方案,我们不确定要走哪条路.

关于SOAP我认为我有答案,没有真正稳定的解决方案(我知道有解决方案,但我想要稳定的东西).

REST怎么样?

或者只是创建我们自己的XML更好?它不会是如此复杂的reguest/respons-flow.

提前致谢!

Adr*_*ski 8

我已经为iPhone OS 3.0创建了一个开源应用程序,它展示了如何在iPhone应用程序中使用REST和SOAP服务,使用XML(使用8个不同的iPhone库),SOAP,JSON(使用SBJSON和TouchJSON),YAML,协议缓冲区(谷歌序列化格式)甚至来自PHP示例应用程序的CSV(包含在项目中).

http://github.com/akosma/iPhoneWebServicesClient

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

SlideShare中的以下演示文稿显示了我在性能,易于实施和有效负载特性方面的发现:

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

基本上我发现,在我的测试中,Binary Plists + REST + JSON和XML + TBXML库是"最佳"选项(意思是:易于实现+反序列化速度+最低有效负载大小).

在Github项目中有一个"结果"文件夹,其中包含Excel表格,总结了调查结果(以及所有原始数据).您也可以自己在3G或wifi中启动测试,然后将结果邮寄给自己进行比较和研究.

希望能帮助到你!


Ken*_*ner 7

REST是要走的路.有SOAP解决方案,但考虑到最终使用SOAP完成所有人都可以使用RESTful服务完成,根本不需要开销(SOAP调用为XML包络内的数据包装XML,也必须解析).

使REST成为一种方法的好处在于它充分利用了HTTP协议,不仅用于获取数据,还用于发布(创建)或删除事物.HTTP具有针对所有这些问题定义的标准消息,以及用于引导的合适的身份验证模型.

由于REST只是HTTP调用,因此您可以选择最符合您需求的数据传输方法.如果您愿意,可以发送/接收XML,尽管JSON更易于解析且发送更小.Plists是另一种流行的格式,因为你可以发送更丰富的数据类型,它比JSON稍微更结构化,尽管从服务器端你通常必须找到库来创建它.

许多人使用JSON但要注意它在解析时非常挑剔 - 在一行开头弄乱一个字符,或者意外地在那里获取字符串而不转义"'"字符并且可能存在问题.


Tau*_*aum 5

XML Property-lists(plist)也是在Cocoa中序列化数据的常用方法.从其他语言生成并且存在一些好的库也是微不足道的.