设计可在多个移动平台上使用的服务

时间:2010-04-27 04:09:01

标签: .net iphone android web-services windows-phone-7

我正在为某些数据构建和设计一个(大部分)只读接口。我将使用ASP.NET MVC来构建一个psudo-restful API。我想知道是否有人可以为各种移动平台,iPhone,Android,Blackberry,Windows Mobile等构建完整的客户端应用程序提供一些资源。

我认为提供XML数据将是最简单和最通用的,但是在Objective-C中解析XML对我来说听起来并不是很有趣,但也许有一些好的库帮助缓解这项任务?

换句话说,什么样的表格在客户端最快?是否有适用于iPhone或Android的JSON解析器?我知道有.NET JSON解析器,但不确定其他平台 - 另一种格式可能更好吗?或者我应该坚持使用纯XML并在每个平台上以不同方式处理它?<​​/ p>

5 个答案:

答案 0 :(得分:1)

您可以创建一个WCF REST服务,以两种格式(json和xml)公开结果,并且根据设备,您可以选择更适合设备功能的格式。这也比创建和ASP.MVC“伪休息API”更好。

WCF服务看起来像这样:

[ServiceContract]
public interface IService
{
    [OperationContract]
    [WebInvoke(
        Method = "GET",
        ResponseFormat = WebMessageFormat.Xml,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "DoWork/xml/{ID}/{Filter}")]
    void DoWork(int ID, string Filter);

    [OperationContract]
    [WebInvoke(
        Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Wrapped,
        UriTemplate = "DoWork/json/{ID}/{Filter}")]
    void DoWorkJson(int ID, string Filter);
}

您可以找到创建WCF Rest Service here.

的好例子

答案 1 :(得分:0)

我曾在iPhone上解析XML。如果您正在寻找DOM解析器,KissXML是我建议你去的第三方库。它易于使用,性能良好。 如果您正在寻找基于流的解析器,iPhone SDK中的NSXMLParser类会很好。 JSON被认为比XML更轻量级,因此更适合移动设备。有用于iPhone的JSON解析的第三方库。你需要谷歌为他们。

答案 2 :(得分:0)

  

坚持使用纯XML并处理它   在每个平台上不同

这才是前进的唯一途径。没有神奇的跨平台框架,如果它仍然是banned from the iPhone

答案 3 :(得分:0)

除非您有充分的理由使用XML,否则请使用JSON。来自Web服务的绝大多数响应可以使用JSON进行充分描述,并且有许多库(至少在iPhone上,我认为它在Android等上是相同的)允许您将JSON解析为2-3行代码中的本机数据结构。

在iPhone平台上,json-framework可让您轻松解析JSON。

我想问题是:假设您正在使用的每个客户端平台都有一个JSON解析框架,那么使用XML可以获得哪些优势,从而证明必须编写超过3行代码进行解析?对于大多数情况,没有任何优势。

答案 4 :(得分:0)

使用Json,所有移动平台都有Json解析器。对于Android,这可能不是最有效的解决方案,但它可能是最实用的。

Android原生支持XML,但不支持Json。换句话说,我想说的是Android手机配备了硬件加速XML解析器(基本上是他们自己专用的小块硅片),但是在Json解析方面,Android手机没有,所以他们必须使用他们的CPU来完成这项工作。理论上,这将意味着Android将使用更多的CPU周期,更多的能量,因此更多的电池来解析Json,而不是解析XML。话虽这么说,不要陷入过早优化的陷阱,很有可能,无论有什么不同,你的用例场景可能都是微不足道的(并且不要相信我的话,只要你的应用程序是完成)。