0

我有 2 个 Maven 应用程序应该通过服务器套接字和套接字进行通信。如果可能,我想将数据作为 Java 对象发送,但为此我需要这两个项目都包含对象的类。

如果可能的话,我不想使用该类创建第三个 maven 项目并将其作为依赖项添加到服务器和客户端项目中。有没有其他方法可以做到这一点?

感谢您的回答!

4

1 回答 1

1

您可以使您的服务器项目成为您的客户端项目的子项目,这意味着您的服务器可以访问客户端需要的所有类,以及一些额外的。

或者,您可以创建一个包含共享类的 JAR,然后使用mvn install(此处的文档:https ://maven.apache.org/guides/mini/guide-3rd -party-jars-local.html )

对于数据的实际传输,您可以使用Serializable接口序列化您的对象,但是这种方法存在许多问题:

  • 易损类更改 - 如果您更改类,旧对象可能会损坏,除非您手动管理它
  • 仅限 Java - 例如,如果您决定做类似的事情,您将无法使用 C++ 编写客户端和使用 Java 编写服务器。
  • 框架不兼容 - 许多流行的框架主要与其他格式一起工作,并且不能保证兼容性。

相反,您可以使用:

  • JSONs - 使用 Jackson Databind 或 Google Gson 库,它们灵活、强大且标准化
  • XML - 类似于 JSON,但有一些细微差别
  • Google Protobuf - 也有一些限制,但在资源受限的环境中被低估了。
  • 自定义字符串格式 - 实现您自己的toDataString()fromDataString()方法。这仅适用于小类,因为 Unicode、转义字符、编码等存在许多问题,大多数库都对你隐藏。这比其他方法风险更大。

一般来说,除非您有充分的理由不这样做,否则我会推荐 JSON。我个人使用杰克逊,这里是一个教程的链接:http: //tutorials.jenkov.com/java-json/jackson-objectmapper.html

于 2019-08-14T14:14:00.350 回答