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

本文关键字:最佳 模型 是什么 共享 之间 服务器 API WEB Android 应用程序 客户端 | 更新日期: 2023-09-27 18:31:24

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

爪哇类

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; }
  }

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

我发现这个问题讨论共享类型,但我的情况有点不同。我应该在 Web API 服务及其客户端之间共享类型吗?还有哪些其他选择?

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

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

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

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

如果您询问一种在多个端点上表示内存中内容的简单机制,那么创建一个"客户端SDK"(许多在线服务分别针对多种编程语言发布它们)是完全合理的,该 SDK 具有这些 DTO,也许还有一些实用程序,并使用适当的一个服务器端。过于聪明并执行诸如放入本机代码之类的操作通常不是一个好主意;将 DTO 的代码保留为适当的语言(例如 Java for Android,或者如果使用 Xamarin,则可能是 C#)。

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

另一个优点是您可以使用 jackson 或 GSON 注释样式对其进行格式化,以毫不费力地序列化/反序列化对象。

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