我正在为公司开发一个新的应用程序.该应用程序必须与iPhone交换数据.
公司服务器端使用.NET框架.
例如:特定CustomerNumber的类"Customer"(名称,地址等)应首先从服务器下载到iphone,存储在本地,然后上传回应用更改(并将其提供给其他人).并发应该不是问题(至少在这个时候......)
无论如何,我必须开发服务器端(webservice或其他)和iPhone应用程序.
我可以自由地确定最佳方法(这是应用程序"第一",因此它将成为未来的"标准").
那么,你建议我什么?
使用SOAP Web服务(XML解析等..)或用户JSON?(它看起来更轻......)我是否清楚如何使用SOAP"上传"数据(很长时间来编写xml肥皂信封......我会避免)但是如何使用JSON做同样的事情呢?
应用程序需要使用日期值(例如:last_visit_date等..)Json中的日期怎么样?
JSON比XML有几个优点.它更小,更少臃肿,因此您将通过网络传递更少的数据 - 在移动设备的情况下,这将产生相当大的差异.
它也更容易在javascript代码中使用,因为您可以简单地将数据包直接传递到javascript数组中,而无需任何解析,提取和转换,因此它也更少CPU密集.
要使用它进行编码,而不是XML库,您将需要一个JSON库.使用XML处理日期 - 将它们编码为标准,然后让库识别它们.(例如,这是一个带有日期的样本库)
这是一本入门书.
啊,最大的问题:JSON还是XML?
一般来说,只有当我需要传递大量文本时,我才更喜欢XML,因为XML擅长包装和标记文本.
当传递小数据对象时,唯一的字符串很小(ids,日期等),我倾向于使用JSON,因为它更小,更容易解析,更具可读性.
另请注意,即使您选择XML,但这并不意味着您需要使用SOAP.SOAP是一种非常重量级的协议,专为合作伙伴之间的互操作性而设计.当你在这里控制客户端和服务器时,它不一定有意义.
考虑一下如何在iPhone上消费结果.你会用什么mechansim来阅读网络服务回复?的NSXMLParser?
如何使用数据会对您的服务方式产生最大影响.
JSON和SOAP是您唯一的选择吗?RESTful服务怎么样?
看看网络上一些拥有iPhone客户端可访问的公共API的大型玩家:
Twitter API FriendFeed API
另外,请查看以下相关文章:
如何在iPhone上解析嵌套的JSON
仍然可以使用SOAP的RESTful WCF服务
REST与SOAP的性能
JSON具有以下优势:
它可以编码布尔值和数值......在XML中,一切都是字符串
它有更清晰的语义......在json中你有{"key":"someValue"}
XML,你可以拥有
或者......任何XML节点都必须有一个名字......这并不总是有意义的......孩子们可能代表一个对象的属性或者孩子,当多次出现时实际上代表一个数组......为了真正理解XML消息的对象结构,你需要它的相应模式......在JSON中,你只需要JSON ......
更小,因此在解析/生成期间使用更少的带宽和内存...
除此之外,我认为XML和JSON之间没有区别...我的意思是,这是可以互换的...你可以使用JSON来捕获SOAP的语义,如果你想......它只是SOAP太臃肿了...如果你想使用SOAP,请使用库和生成器......手动构建它既不好玩也不有趣......
使用XML RPC或JSON RPC应该更快...它更轻量级,你可以随意使用JSON或XML ......但是在创建客户端< - >服务器应用程序时,在我看来,一个非常重要的事情是抽象双方的传输层...你的整个业务逻辑等在通信方面绝不应该依赖于一个微小的界面,然后你可以根据需要将协议插入你的应用程序......