在WEB API服务器和Android客户端应用程序之间共享模型的最佳实践是什么?

时间:2016-01-21 06:32:27

标签: java c# android web-services asp.net-web-api2

我有一个Android应用程序,它使用WEB API Web服务与.NET服务器通信。目前,我在服务器和客户端上传输对象。

Java类

public class UserAction {

    private String username;
    private String action;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAction() {
        return action;
    }

    public void setAction(String action) {
        this.action = action;
    }
}

服务器端的我的C#类

  public class UserActionTO
  {
    public string Username { get; set; }
    public string Action { get; set; }
  }

我希望在两个应用程序之间共享这些模型。

我发现这个问题讨论分享类型,但我的情况有点不同。 SlidingTabStrip

我正在考虑创建一个C ++ DLL,我的android应用程序和C#应用程序都可以使用它。这是我最好的选择吗?

修改 我正在使用JSON传输数据

2 个答案:

答案 0 :(得分:2)

最佳选择是使用标准的平台中立格式(通常是JSON或XML)。这为您提供了以任何方式改变客户端和服务器的巨大自由,并使开发和测试更容易,因为您可以轻松地检查或生成内容。

如果您要问一个简单的机制来在多个端点上表示内存中的内容,那么创建一个"客户端SDK"是完全合理的。 (许多在线服务发布它们,每个都有多种编程语言),它们有这些DTO,也许还有一些实用程序,并使用适当的服务器端。一般来说,过分聪明并做一些像本地代码这样的事情并不是一个好主意;将DTO的代码保存在适当的语言中(例如Java for Android,或者如果使用Xamarin则可能是C#)。

答案 1 :(得分:2)

由于您已经在使用JSON作为数据,我建议您在.NET中编写一次并创建示例结果JSON对象。然后使用http://www.jsonschema2pojo.org/创建您的POJOS,它甚至会包含生成的注释,以便您知道不要修改该类。

另一个优点是你可以使用jackson或GSON注释样式对其进行格式化,以便轻松地序列化/反序列化对象。

如果你想发疯,你可以用JSON建模一切,然后有一个脚本使用http://json2csharp.com/为你创建你的.NET和http://www.jsonschema2pojo.org/ Java POJO。但我不确定这是值得的麻烦:)