怎么选择进程间通信方式?

怎么选择进程间通信方式?

关于进程间通信,我这种场景选用哪种方式好?

有一个界面进程A,它能够调用后台程序B,B能够被调用多次,会有多个B进程。像chrome.exe一样,好多个。

要求:

B要给A发消息,量不多,比如错误日志,显示在界面上。这里还好。

A需要能从每个B进程读取一些数据,显示在界面上。不是简单的状态之类。是一些不定数量的数据,比如数组。随着运行时间推移,这些数据可能变多。这里麻烦。

是不是用socket通信比较好些?但每个B都要监听一个端口?那如果运行了100个B……

或者干脆用一个sqlite 本地数据库保存?sqlite好像是锁表的,对性能又有影响

你可以A进程进行侦听,B进程主动将状态发送给A呀,这样就不存在需要占用100个端口的问题了
每个B进程总是要知道自己的ID是什么吧,要不然100个进程完成同一个任务也说不过去呀,通信的时候顺便告诉A自己的ID不就得了
错误日志完全可以统一写个日志,然后A定时去读,不用通信,要不然A有任何问题还影响B正常记录日志了那也不合理呀
如果你觉得一个侦听要能同时跟100个进程通信实现起来有点复杂,其实也可以B进程把数据写进redis,A进程定时去消费,这样会简单很多

有很多方式解决:
比如说A进程做服务端,B进程做客户端进行通讯;
比如说使用共享内存;
比如说搭一个mqtt broker,A进程订阅,B进程发布
……