web版的单机版构建

需求

把一个成熟的Web版本程序 做成单机版(桌面)程序,应对不同的客户环境

思路

正常的 Web项目 一般由几个模块组成

  • 数据库服务
  • 后台服务
  • 前台服务
  • redis等中间件

    后台服务和前台服务 在 War包部署中可以合二为一 redis等中间件 如果是为了单机版部署也是可以优化掉的.所以我们在单机版部署中 必须的模块就剩下 这几个了

  • 业务服务
  • 数据库服务
  • 桌面程序服务

ps: 当然数据库服务这里默认是一个单机版自带一个数据库服务,应对客户场景保密 不通外网的情况 如果客户服务可以通外网,也允许数据库服务外联,我们就可以 把数据库服务给去掉 ,这里分析 单机版自带数据库服务的情况

方案

  • 业务服务(包含数据库,不包括前台代码) => jar方式打一个可执行jar包,h2文件模式内嵌数据库
  • 桌面程序服务(electron 包括前台代码) =>做桌面应用程序

启动 步骤如下

  • 用户点击 demo.exe文件 electron服务启动(前台服务启动),页面展示启动中
  • 逻辑代码 用命令行启动 单机版内包含的可执行 jar文件 拉起业务服务
  • 前台和后台约定好一个接口代表业务服务启动成功,前台代码 以一定的频率调用接口,查询后台服务启动的情况(推荐后台使用:spring-boot-starter-actuator做生命周期管理)
  • 前台服务得知后台启动成功,进入业务页面.整体服务启动成功

关闭步骤如下

  • 用户点击退出或者❌号
  • electron服务(前台服务)监听到,给后台发送退出请求(spring-boot-starter-actuator 有提供退出接口)
  • electron服务 退出