一个RPC(Remote Procedure Call)远程过程调用的练习程序。
\---client
Client.java
Connector.java
DynamicProxyFactory.java
RemoteCall.java
RPCService.java
RPCServiceImpl.java
Server.java
RemoteCall.java
是一个用于传输的对象。它是RPC(远程过程调用)系统中非常关键的一个组件,负责封装远程方法调用的所有必要信息。
RPCService.java
一个接口,定义request方法。
RPCServiceImpl.java
RPCService的实现类,实现request方法。
Client.java
客户端,调用DynamicProxyFactory.getProxy返回动态代理对象,从而进行远程调用。
Connector.java
协助客户端与服务器之间通信的通信工具类,主要包括建立网络连接、数据传输、连接管理。
DynamicProxyFactory.java
用于创建客户端的动态代理对象。主要功能就是隐藏了网络通信细节,将方法调用转换为网络请求。返回进行远程调用的动态代理。
Server.java
服务端,用于接收客户端请求、执行本地服务实现的方法并返回结果。首先监听指定端口,然后注册服务,再启动服务。在服务运行的过程中不断接到连接请求,接到连接请求后便开启新线程处理请求。
总结
实现远程过程调用主要就是使用动态代理对象,让其看起来像切切实实的本地方法,但实际是隐藏了网络通信细节,将方法调用转换为网络请求,从而获取到远程调用的结果。服务端只需要不断地监听端口,处理请求并返回RemoteCall对象即可。