JavaFX桌面应用程序与远程服务器通信的最佳实践
我需要关于在JavaFX中设计与远程服务器通信的桌面应用程序的最佳实践的建议。由于我在开发web应用程序方面有很多经验,所以我需要知道常见的问题,并且需要知道在开发桌面应用程序时应该考虑这些问题 问题描述和要求: 这是一个应用程序,供员工根据其角色查看数据、执行报告和执行其他多项操作JavaFX桌面应用程序与远程服务器通信的最佳实践,java,javafx,desktop-application,Java,Javafx,Desktop Application,我需要关于在JavaFX中设计与远程服务器通信的桌面应用程序的最佳实践的建议。由于我在开发web应用程序方面有很多经验,所以我需要知道常见的问题,并且需要知道在开发桌面应用程序时应该考虑这些问题 问题描述和要求: 这是一个应用程序,供员工根据其角色查看数据、执行报告和执行其他多项操作 此应用程序将为10名以上的员工安装,以后可以增加 每个员工都应该能够登录并使用该应用程序(多个员工可以同时使用该应用程序) 每位员工对数据所做的任何修改都将记录下来,以备将来跟踪 应用程序将根据每个用户的角色显示
- 此应用程序将为10名以上的员工安装,以后可以增加
- 每个员工都应该能够登录并使用该应用程序(多个员工可以同时使用该应用程序)
- 每位员工对数据所做的任何修改都将记录下来,以备将来跟踪
- 应用程序将根据每个用户的角色显示不同的内容
- 由于该应用程序将安装在许多计算机上,员工可以从不同的计算机登录到该应用程序,并通过其登录进行识别
- 我使用Mysql作为后端数据库
- 我创建了一个连接到数据库的中间服务器 允许客户端应用程序连接到服务器并进行交换 员工使用的每个应用程序实例都应 直接建立到托管在另一个数据库上的数据库的连接 同一本地网络上的服务器
- 数据库:(MySQL、PGSQL、MSSQL…)
- 后端服务器:Spring引导可能是一个不错的选择
- JPA(Eclipselink或Hibernate)存储库
- 在服务级别实现业务逻辑
- REST接口
- 处理身份验证和令牌
- 前端:JavaFX
- 与终端的HTTP通信。JavaFX中没有实现任何业务逻辑。仅与后端接口
当然,您可以尝试使用
springdatarestwebmvc
通过REST直接公开数据库模型。如果您的数据库已经正确设计,那么在Netbeans中,只需点击几下,您就可以提取模型,并准备好一个应用程序,通过REST公开您的模型;然后,需要在客户机中实现业务逻辑。老实说,如果将来需要维护项目,不要使用此解决方案并在服务器中实现逻辑。应用程序的体系结构需要考虑许多组件,并且可以通过多种方式进行设计,因此,这个问题没有明确的答案,但在设计一个问题时,应该考虑一些要点。在开发桌面应用程序时,应该考虑它与Web应用程序的关键区别,并尝试解决它们带来的挑战。
- 网络(或Internet)连接:桌面应用程序可能不会一直有活动的网络连接,因此除非您需要 当活动连接不可用时,程序会使每个事务失败 应该有本地嵌入式数据库(如h2),然后同步 当活动连接可用时(不要连接到远程数据库),远程服务器中web应用程序的数据 直接因为服务器端验证、负载平衡等等!) 桌面应用程序本质上是独立的,因此如果不能 没有网络连接的功能那么它有什么意义呢 作为一个桌面应用程序
- 同步:上一点建议您使用本地
数据库并将其与远程服务器应用程序同步。记得吗
同步应该是双向的:A)将本地数据发送到服务器
B) 从服务器接收数据并将其保存在本地数据库中。这
如果数据模型复杂且充满依赖性,则可能很棘手
因为依赖实体需要同步在一起,所以
增加了在连接故障或其他事件中执行同步操作的风险
功率损耗。还应考虑数据模型的更改。因此,试着:
- 将数据模型设计为尽可能最小
- 避免实体之间的依赖关系
- 避免在数据模型中建模跨用户交互,因为它打破了这样一种假设,即应用程序的设计目的是供用户使用,而不考虑其他用户(这在桌面应用程序中经常出现)
- 为同步设计一个协议,该协议考虑数据模型的更改,可能需要在同步开始之前更新程序
- 更新:桌面应用程序通常需要定期更新。你有 在设计架构的所有步骤中都要牢记这一点, 特别是在设计高级模块时 尽可能独立,以便可以独立更新。您还需要设计一个更新方案来处理此需求
- 多线程:JavaFx和大多数桌面框架