进程与系统服务之间的通信一般采用什么方式?

时间:2021-12-16 16:07:24
本来程序的主要逻辑就是放在一个主程序里面实现,现在考虑到不同用户切换,session的问题,想把主要的逻辑放在服务里面执行,比如客户端上线,之类的事情,把原来的程序分割成 服务+UI的形式,UI只负责数据接收,传递到服务,服务处理传回UI,这样就会需要服务和UI之间通信,这里采用什么样的方式效率比较高,传输的数据也不会有限制?

5 个解决方案

#1


如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

#2


引用 1 楼  的回复:
如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

+1

#3


建议使用socket,可以移植到不同的环境下面

#4


共享内存方式 无法捕获“一方断开”事件。
貌似 基于此之上的 管道可以。
使用方式 我看来 也和 socket 差不多,可以考虑封一个借口两个实现。。

不过socket需要配置端口号,虽然 1024 ~ 65535 之间有很多可能,但你也可能遇到已存在软件占用情况。那么就需要安装、配置的过程,还要有运行期停止重配置的机制。不想考虑这点的话倒无所谓了。

#5


引用 1 楼  的回复:
如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

++
其实本地有一些进程间通信,还是使用了socket
netstat -an 你可以看到一些以环回地址为目标/源地址的连接

#1


如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

#2


引用 1 楼  的回复:
如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

+1

#3


建议使用socket,可以移植到不同的环境下面

#4


共享内存方式 无法捕获“一方断开”事件。
貌似 基于此之上的 管道可以。
使用方式 我看来 也和 socket 差不多,可以考虑封一个借口两个实现。。

不过socket需要配置端口号,虽然 1024 ~ 65535 之间有很多可能,但你也可能遇到已存在软件占用情况。那么就需要安装、配置的过程,还要有运行期停止重配置的机制。不想考虑这点的话倒无所谓了。

#5


引用 1 楼  的回复:
如果在同一个机器,可以用共享内存
如果在不同的机器,可以用socket

++
其实本地有一些进程间通信,还是使用了socket
netstat -an 你可以看到一些以环回地址为目标/源地址的连接