我有一个桌面客户端,它将使用 Netty 连接到服务器(您的基本客户端/服务器设置)。客户端有许多对象(POJO),不仅要进行 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/