需求
把一个成熟的Web版本程序 做成单机版(桌面)程序,应对不同的客户环境
思路
正常的 Web项目 一般由几个模块组成
- 数据库服务
- 后台服务
- 前台服务
redis等中间件
后台服务和前台服务 在 War包部署中可以合二为一 redis等中间件 如果是为了单机版部署也是可以优化掉的.所以我们在单机版部署中 必须的模块就剩下 这几个了
- 业务服务
- 数据库服务
- 桌面程序服务
ps: 当然数据库服务这里默认是一个单机版自带一个数据库服务,应对客户场景保密 不通外网的情况 如果客户服务可以通外网,也允许数据库服务外联,我们就可以 把数据库服务给去掉 ,这里分析 单机版自带数据库服务的情况
方案
- 业务服务(包含数据库,不包括前台代码) => jar方式打一个可执行jar包,h2文件模式内嵌数据库
- 桌面程序服务(electron 包括前台代码) =>做桌面应用程序
启动 步骤如下
- 用户点击 demo.exe文件 electron服务启动(前台服务启动),页面展示启动中
- 逻辑代码 用命令行启动 单机版内包含的可执行 jar文件 拉起业务服务
- 前台和后台约定好一个接口代表业务服务启动成功,前台代码 以一定的频率调用接口,查询后台服务启动的情况(推荐后台使用:spring-boot-starter-actuator做生命周期管理)
- 前台服务得知后台启动成功,进入业务页面.整体服务启动成功
关闭步骤如下
- 用户点击退出或者❌号
- electron服务(前台服务)监听到,给后台发送退出请求(spring-boot-starter-actuator 有提供退出接口)
- electron服务 退出