有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我有一个安卓应用程序,可以与一个用户对话。NET服务器使用WEB API WEB服务。目前,我在服务器和客户端上都有传输对象

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

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

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

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

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


共 (2) 个答案

  1. # 1 楼答案

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

    如果您想了解一种在多个端点上表示内存中内容的简单机制,那么创建一个“客户机SDK”(许多在线服务都针对多种编程语言发布它们)是完全合理的,它包含这些DTO,可能还有一些实用程序,并使用适当的服务器端。通常情况下,过于聪明地使用本机代码并不是一个好主意;将DTO的代码保存在适当的语言中(比如Android的Java,或者使用Xamarin的C#)

  2. # 2 楼答案

    既然你已经在使用JSON来处理数据,我建议你写一次。NET并创建示例结果JSON对象。然后使用http://www.jsonschema2pojo.org/创建POJO,它甚至会包含生成的注释,这样您就知道不需要修改类

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

    如果你想发疯,你可以用JSON对所有东西建模,然后用http://json2csharp.com/来创建你的脚本。NET和http://www.jsonschema2pojo.org/为您提供Java POJO。但我不确定是否值得这么麻烦:)