参考文档:
http://javatar.iteye.com/blog/1123915
http://www.importnew.com/22003.html
概念
RPC(Remote Procedure Call Protocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC不依赖于具体的网络传输协议,tcp、udp等都可以。由于存在各式各样的变换和细节差异,相应的rpc也派生出了各式远程过程通信协议。
RPC相当于封装了网络请求代码,如常用的socket请求,并且结合了动态代理模式,可以方便地进行远程方法调用(想了解动态代理模式可以去看之前写的java设计模式之代理模式)。
使用socket实现RPC框架
阅读http://javatar.iteye.com/blog/1123915这篇博客中的示例代码可知,可以使用socket连接来实现RPC框架,当应用A想执行应用B的其中一个方法时,首先使用动态代理模式,通过调用代理类的方法来间接调用应用B的具体方法,由于应用A和应用B之间需要网络通信,所以代理类的内部通过socket连接的方式实现通信。请求中指明了要调B的哪一个方法,以及要传哪些参数等。在B应用中,通过监听端口,捕获到A的请求后,使用反射的机制,找到最终要调用的方法并执行后返回给A。