服务端网络通信RMI

RMI(Remote Method Invocation)是一种在C/S架构中实现远程对象调用的技术,允许客户端像调用本地方法一样调用服务端对象。本文介绍了RMI的基本业务流程,包括方法映射、会话创建、网络通信、服务响应等步骤,展示了如何在服务器间通过RMI进行数据库查询等操作,从而避免底层网络通信细节的处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

服务端网络通信 RMI

一、摘要

RMI( Remote Method Invocation),远程方法访问。在做C/S开发中,让我们可以不必关心底层网络通讯细节,也可像调用本地对象方法一样调用远端对象方法,方便了业务流程。

在这里插入图片描述

从上述图片可以看出RMI在端对端通信的处理方式 客户端请求——>服务端响应处理——>客户端回调处理。

业务场景例子:用户请求另一个离线用户的信息,此时服务端global的用户信息没有该用户,这个时候我们就需要到数据库查询该离线用户信息,数据库返回信息。在此应用场景中,我们会在服务器A(数据库的服务器)上定义业务需要的查询数据方法例如GetUserInfo,GetUserName等等数据库查询方法,我们需要在服务器B(业务处理的服务器)上调取数据库定义的查询接口 并将获得的数据返回。但是服务器B并不能直接调服务器A的方法,那么我们该怎么搞呢?

​ RMI就是干这件事的工具,我们先建立服务器A查询方法调用的映射表,约定通信编码格式,服务器B通过RMI通信携带的方法名和CallBackObject,调用了服务器A的查询方法,并将查询所需的信息存到了CallBackObject,服务端B在CallBackObject时做相应的业务处理。

二、基本业务流程

在这里插入图片描述

1、method_list 初始化

​ 服务器在初始化时会创建相应业务的RMIObject模块 例如Login、User、System等等,并将相应的RMI服务按照名字和地址绑定到对象管理器。

2、CreateRMISession

​ 客户端和服务器建立socket网络链接,创建客户端session并关联到session_list(通信结算之后session会被释放)

3、OnRecvPackage

​ 建立连接之后,开始正式rmi通信,客户端将参数对象序列化后,发起服务请求

4、RecvRMICallHelper

​ 服务端反序列化获取参数对象,查找对应模块,调用rmi服务函数

5、rmisession Return

​ 将处理结果序列化,发送客户端

6、OnRecvPackge

​ 客户端反序列化,通过id查找 对应backobj处理结果

整个业务流程:RmiModule(客户)->Session(客户)->NetWork->Session(服务)->RmiModule(服务)–>RmiModule(客户)->Session(服务)->RmiModule(服务)–>RmiModule(客户)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值