采用C/C++编程的人员,对于不同进程、不同计算机之间的RPC对象通讯代理需要比较多,在window系统下常用的是DCOM,Linxu系统采用QT编程的经常会用到DBUS。
DCOM通讯性能很高的,本地进程通讯可以达到10000次/秒,但DCOM一般只能用在window系统;采用DBUS通讯代理则通讯性能很不尽如人意,本人刚开始使用DBUS做通讯代理,却发现其本地计算机之间的进程通讯次数一般只能600次/秒,而我的软件一般要实现10000次/秒左右,所以实在太慢了,而且DBUS还没有对象回调机制。
经过半年多的努力,终于实现了自己的分裂式跨平台对象代理机制,实现了本地Linux系统进程间通讯8000次/秒,window系统3000次/秒,跨计算机也可以达到2500次左右,基本满足了系统t通讯要求,而且代理机制还实现了对象回调功能。
为了比较完整实现分裂式跨平台对象代理机制,还开发了接口定义语言转换生成程序,接口函数调用采用无泄漏内存的设计方法,不会像微软DCOM通讯接口那样非常容易发生内存泄漏的问题。
实现这个分裂式组件对象模型较复杂,需要完成的内容:
复杂的多线程通讯处理;异步通讯转同步处理;实现接口定义语言并实现C++接口代码自动生成机
编写这个分裂式组件对象模型走了不少弯路,发现操作系统和QT的一些库不怎么好用。
现在对于这个软件模块做了两次升级,
第一次升级:增加可以通过一台局域网计算机来中转转发连接到第三台计算机,这个转发功能在工控领域还有点作用
第二次升级,增加可以采用云端服务器来做中转转发,采用云端服务器中转就实现了两台无外网IP地址计算机可以直接通讯了,虽然这个通讯总是要经过云端服务器。
如果大家有什么建议和需求,可互相交流学习。