Android 移动应用程序和web服务数据传输(WCF和JSON)

Android 移动应用程序和web服务数据传输(WCF和JSON),android,json,wcf,mobile,Android,Json,Wcf,Mobile,我正在寻找一些关于在移动设备之间传输数据的最佳实践概念(现在是Android,但概念也适用于其他设备)。我目前有一个WCF服务,它设置了一个工作的JSON端点。我开始使用适当的WebGet/Invokes等来修改现有的服务方法,使之成为RESTful的。服务实现了请求/响应模式,因此客户端和服务之间的所有通信都封装在一个复杂的MessageRequest和MessageResponse对象中 让移动应用程序成功利用此模式的最佳方式是什么?我只能想出两种解决方案,每种都有各自的优缺点: 在客户机项

我正在寻找一些关于在移动设备之间传输数据的最佳实践概念(现在是Android,但概念也适用于其他设备)。我目前有一个WCF服务,它设置了一个工作的JSON端点。我开始使用适当的WebGet/Invokes等来修改现有的服务方法,使之成为RESTful的。服务实现了请求/响应模式,因此客户端和服务之间的所有通信都封装在一个复杂的MessageRequest和MessageResponse对象中

让移动应用程序成功利用此模式的最佳方式是什么?我只能想出两种解决方案,每种都有各自的优缺点:

  • 在客户机项目中创建所有数据传输对象,然后创建一个JSON/DTO映射器(GSON在这里可能工作得很好)。使用客户端对象处理所有客户端数据管理,直到需要服务器请求为止,转到DTO到JSON,然后将请求发送到服务器。让我印象深刻的是,它使客户端数据管理更容易,因为它与服务域并行。不利的一面是,当一个对象变得越复杂时,它们就有可能崩溃
  • 忽略DTOs客户端,直接从JSON开始做所有事情。这样做的好处是,它消除了与较大对象和所需映射相关的开销。这里的缺点是,这让我觉得非常脆弱——对返回对象的任何更改都需要在代码中进行深层处理,而不仅仅是对客户端DTO和mapper进行更改

  • 有没有更好的方法来完成这种数据交换?或者这些是唯一真正的解决方法?如何管理移动应用程序中的数据传输?

    我的WCF设置与您非常相似,最终我在客户端创建了非常轻量级的数据对象。这些类负责分离表示它们自己的
    JSONObject
    ,并创建它们所需的任何子对象,但除此之外,还有一些简单的类,主要用于将数据分组在一起,不包含任何业务逻辑。我们还不需要做任何客户端缓存,但是这些对象将是一个很好的地方,可以将它们放入SQLite代码中以保持它们自己

    到目前为止,它工作得非常好,我们甚至可以通过包含
    org.json
    将客户端Android代码移植到另一个运行常规Java的项目中