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

What is the best practice for sharing models between a WEB API server and an Android client application

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

Java class

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#class

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

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

我发现这个问题讨论的是共享类型,但我的情况有点不同。 Should I share types between a Web API service and its client ? What are the other options?

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

编辑 我正在使用 JSON 传输数据

最好的选择是使用标准 platform-neutral 格式(通常是 JSON 或 XML)。这为您提供了极大的自由,可以随心所欲地改变客户端和服务器,并使开发和测试更加容易,因为您可以轻松地检查或生成内容。

如果您正在询问一种在多个端点上表示内容 in-memory 的简单机制,创建一个 "client SDK" 是完全合理的(许多在线服务分别针对多种编程语言发布它们)具有这些 DTO 和一些实用程序并使用适当的实用程序 server-side。变得过于聪明并做一些类似于本机代码的事情通常不是一个好主意;将 DTO 的代码保留在适当的语言中(例如 Java 表示 Android,或者如果使用 Xamarin,则可能是 C#)。

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

另一个优点是您可以使用 jackson 或 GS​​ON 注释样式将其格式化为 serialize/de-serialize 对象,不费吹灰之力。

如果你想发疯,你可以在 JSON 中对所有内容进行建模,然后使用一个脚本使用 http://json2csharp.com/ 创建您的 .NET 和 http://www.jsonschema2pojo.org/ for Java POJO 适合您。但我不确定是否值得麻烦 :)