当前位置:  开发笔记 > 编程语言 > 正文

JSON还是SOAP(XML)?

如何解决《JSON还是SOAP(XML)?》经验,为你挑选了4个好方法。

我正在为公司开发一个新的应用程序.该应用程序必须与iPhone交换数据.

公司服务器端使用.NET框架.

例如:特定CustomerNumber的类"Customer"(名称,地址等)应首先从服务器下载到iphone,存储在本地,然后上传回应用更改(并将其提供给其他人).并发应该不是问题(至少在这个时候......)

无论如何,我必须开发服务器端(webservice或其他)和iPhone应用程序.

我可以自由地确定最佳方法(这是应用程序"第一",因此它将成为未来的"标准").

那么,你建议我什么?

使用SOAP Web服务(XML解析等..)或用户JSON?(它看起来更轻......)我是否清楚如何使用SOAP"上传"数据(很长时间来编写xml肥皂信封......我会避免)但是如何使用JSON做同样的事情呢?

应用程序需要使用日期值(例如:last_visit_date等..)Json中的日期怎么样?



1> gbjbaanb..:

JSON比XML有几个优点.它更小,更少臃肿,因此您将通过网络传递更少的数据 - 在移动设备的情况下,这将产生相当大的差异.

它也更容易在javascript代码中使用,因为您可以简单地将数据包直接传递到javascript数组中,而无需任何解析,提取和转换,因此它也更少CPU密集.

要使用它进行编码,而不是XML库,您将需要一个JSON库.使用XML处理日期 - 将它们编码为标准,然后让库识别它们.(例如,这是一个带有日期的样本库)

这是一本入门书.



2> Avi..:

啊,最大的问题:JSON还是XML

一般来说,只有当我需要传递大量文本时,我才更喜欢XML,因为XML擅长包装和标记文本.

当传递小数据对象时,唯一的字符串很小(ids,日期等),我倾向于使用JSON,因为它更小,更容易解析,更具可读性.

另请注意,即使您选择XML,但这并不意味着您需要使用SOAP.SOAP是一种非常重量级的协议,专为合作伙伴之间的互操作性而设计.当你在这里控制客户端和服务器时,它不一定有意义.


+1"即使你选择XML,这绝不意味着你需要使用SOAP"
您为XML建议提供的唯一支持是"XML擅长包装和标记文本".你能扩展一下吗?

3> JBRWilkinson..:

考虑一下如何在iPhone上消费结果.你会用什么mechansim来阅读网络服务回复?的NSXMLParser?

如何使用数据会对您的服务方式产生最大影响.

JSON和SOAP是您唯一的选择吗?RESTful服务怎么样?

看看网络上一些拥有iPhone客户端可访问的公共API的大型玩家:

Twitter API FriendFeed API

另外,请查看以下相关文章:

如何在iPhone上解析嵌套的JSON

仍然可以使用SOAP的RESTful WCF服务

REST与SOAP的性能



4> back2dos..:

JSON具有以下优势:

    它可以编码布尔值和数值......在XML中,一切都是字符串

    它有更清晰的语义......在json中你有{"key":"someValue"}XML,你可以拥有someValue或者......任何XML节点都必须有一个名字......这并不总是有意义的......孩子们可能代表一个对象的属性或者孩子,当多次出现时实际上代表一个数组......为了真正理解XML消息的对象结构,你需要它的相应模式......在JSON中,你只需要JSON ......

    更小,因此在解析/生成期间使用更少的带宽和内存...

除此之外,我认为XML和JSON之间没有区别...我的意思是,这是可以互换的...你可以使用JSON来捕获SOAP的语义,如果你想......它只是SOAP太臃肿了...如果你想使用SOAP,请使用库和生成器......手动构建它既不好玩也不有趣......

使用XML RPC或JSON RPC应该更快...它更轻量级,你可以随意使用JSON或XML ......但是在创建客户端< - >服务器应用程序时,在我看来,一个非常重要的事情是抽象双方的传输层...你的整个业务逻辑等在通信方面绝不应该依赖于一个微小的界面,然后你可以根据需要将协议插入你的应用程序......


不对.例如,在Java World中,编写XSD并从中生成类是很常见的.然后,您可以从这些对象解析并序列化为XML并返回.以http://xmlbeans.apache.org/为例.
推荐阅读
凹凸曼00威威_694
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有