快捷搜索: 王者荣耀 脱发

RPC的实现原理,是基于HTTP协议的还是tcp协议的?

 
RPC可以基于TCP协议也可以基于HTTP协议,RPC的主要目的只是获取由远程机器上的程序所执行的结果。 RPC可以基于TCP协议也可以基于HTTP协议,RPC的主要目的只是获取由远程机器上的程序所执行的结果。
利用Socket API实现基于TCP协议的RPC调用,由服务的调用方与服务的提供方建立Socket连接,并由服务的调用方通过Socket将需要调用的接口名称、方法名称和参数序列化后传递给服务的提供方,服务的提供方反序列化后再利用反射调用相关的方法,最后将结果返回给服务的调用方。 利用Socket API实现基于TCP协议的RPC调用,由服务的调用方与服务的提供方建立Socket连接,并由服务的调用方通过Socket将需要调用的接口名称、方法名称和参数序列化后传递给服务的提供方,服务的提供方反序列化后再利用反射调用相关的方法,最后将结果返回给服务的调用方。
基于HTTP协议的RPC调用则更像是我们访问网页一样,只是它的返回结果更加单一简单。其大致流程为:由服务的调用者向服务的提供者发送请求,这种请求的方式可能是GET、POST、PUT、DELETE等中的一种(服务的提供者可能会根据不同的请求方式做出不同的处理,或者某个方法只允许某种请求方式),而调用的具体方法则根据URL进行方法调用,而方法所需参数则可能是对服务调用方传输过去的XML数据或JSON数据解析后的结果,最后返回JOSN或XML的数据结果(这需要根据实际应用定义相关的协议)。由于目前有很多开源的WEB服务器,如Tomcat,JBoss等,所以其实现起来更加容易(就跟做Web项目一样)。 基于HTTP协议的RPC调用则更像是我们访问网页一样,只是它的返回结果更加单一简单。其大致流程为:由服务的调用者向服务的提供者发送请求,这种请求的方式可能是GET、POST、PUT、DELETE等中的一种(服务的提供者可能会根据不同的请求方式做出不同的处理,或者某个方法只允许某种请求方式),而调用的具体方法则根据URL进行方法调用,而方法所需参数则可能是对服务调用方传输过去的XML数据或JSON数据解析后的结果,最后返回JOSN或XML的数据结果(这需要根据实际应用定义相关的协议)。由于目前有很多开源的WEB服务器,如Tomcat,JBoss等,所以其实现起来更加容易(就跟做Web项目一样)。
经验分享 程序员 微信小程序 职场和发展