当前有一个软件结构,采用了前后不同语言开发的、多进程组织的结构形式,如下图所示:
1、后端使用C++开发;前端使用.Net/Vue开发;(为什么不采用一套语言机制,属历史问题,不讨论了。)
2、后端负责逻辑性的运算执行,按功能划分不同的EXE,存在多个(约20来个)程序,都是周期性的定时逻辑;每个程序会按照逻辑需要(设计)加载配置文件或记录,产生支持周期性逻辑的数据结构对象(各种面向对象);
3、前端负责结果呈现,尽量不含逻辑性的内容;
4、数据库保存软件运行所需的配置文件(XML/JSON)、内容记录(设备档案等)、数据记录(数值)等;前后端均可对数据库进行读写。
问题:以设备保养计算为例进行举例说明,如何解决前端添加一个设备后、该添加的操作记录写入数据库(配置文件),后端设备保养计算逻辑的程序能够获知该设备添加,并能在程序内建立设备对象,并完成运算?
当前已尝试过的思路:
1、添加设备后(更改配置或记录),重启指定或全部后台程序。但此方法会中断软件执行,即为了添加一个设备就整套重启,导致前端无影响,中断操作,不科学。
2、添加设备后(更改配置或记录),重新初始化程序配置文件或内存数据结构对象,在不停程序的情形下完成进程间对象的创建、删除和编辑。首先,此办法较为麻烦,后端20多个程序每个配置文件格式不同,每个程序要加载的配置文件和记录数量不同,且重新初始化也会中断操作逻辑,不通用、也不科学。
3、过程调用(RPC),就现在的设计来说,所有程序均在一台服务器机器上运行,选用RPC显得过于复杂了,但从功能上来说,设计的软件体量还小,而RPC本身就已经很大了。且需要一套支持Windows、SQLServer\PostgreSQL、C++.Net的RPC也不太好找。