java - Netty - 如何最好地为具有大量 POJO 的桌面应用程序构建客户端/服务器

标签 java client nio netty

我有一个桌面客户端,它将使用 Netty 连接到服务器(您的基本客户端/服务器设置)。客户端有许多对象(PO​​JO),不仅要进行 CRUD,还要执行一些复杂的业务逻辑,这就是为什么我不能让客户端直接与数据库对话。同样,我不想将所有 SQL 逻辑都放在客户端中。

例如我有:

boolean RaceTrackDAO.saveTrack(Track track);
int RaceTrackDAO.getFastestLapTime(Track track);
Driver[] RaceTrackDAO.getTopDriversForTrack(int trackID)
...

boolean DriverDAO.saveDriver(Driver driver);
bollean DriverDAO.updateDriver(Driver driver);
Driver[] DriverDAO.getTopTenDrivers(Driver driver);
...

等等……

在客户端,我有:

someUICode()
{
  ...
  Driver[] topTenDrivers = DriverDAO.getTopTenDrivers();
  ...
}

问题是我如何构建/实现 DriverDAO 层以在客户端/服务器系统中使用 Netty?

我明白了you can send POJO's through the Channel ,但文档只真正谈论发送一种类型的 POJO。我做了一些研究,发现有各种各样的选择。命令和状态模式看起来很有趣。

对我来说,关键是尽可能避免样板代码。我知道 Netty 有内置工具可以通过序列化编码和解码 POJO。那是比较容易的部分。我只是不想用一百万个 if 语句来处理所有可能的 pojo(并知道要进行哪些后端调用)。

对我来说关键是保持整体的可维护性。性能很好,但系统永远不需要同时处理数千个连接,所以这里有一点回旋余地。

考虑到所有这些,在 DAO 层使用 Netty 设计这样一个系统的最佳架构是什么?

最佳答案

如果你想让事情变得简单,你可以使用 RMI(?) 或通过 Netty 序列化你的对象。这样你就不需要能够处理所有可能的对象。 (您仍然应该尝试将它们保持在可管理的水平)

关于java - Netty - 如何最好地为具有大量 POJO 的桌面应用程序构建客户端/服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8792123/

相关文章:

java.lang.NoClassDefFoundError : com. example.bylyngo

java - 我的 Java 服务器和本地客户端之间的通信

java - 在 JSF 中显示带有客户端时区的日期时间值

java - FileChannel.close() 是否关闭底层流?

java - 使用 Netty 实现 Servlet API

java - 如何在运行时为当前测试ApplicationContext注册Spring Context事件

java - 将 FXML 中定义的 AnchorPane 动态添加到选项卡并稍后访问此 Pane 内容

java - 从 Activity 中调用自定义片段

java - 如何使用服务器端代码在客户端计算机中创建和执行批处理文件?

java - Java5/Java6 应用程序到 Java 7 的周到迁移计划?