参考 https://www.cnblogs.com/helloworldmybokeyuan/p/11626833.html
RPC remote process call,远程过程调用,基于TCP 实现,跨语言,跨平台,速度快。
缺点是,必须在客户端和服务端使用 相同的RPC 框架,比如 webservie(cxf)、dubbo
其中,webservie(cxf) 是比较老的一种协议,基于 xml,现在基本上json取代,所以该框架被抛弃
RMI Remote Methods Invoke 远程方法调用,基于TCP 实现,仅限于java技术,所以不跨语言,只能跨平台,速度快。
缺点同RPC,并且仅限定在 java中使用,比如 hessian
其中,hessian 的使用,需要指定http协议的请求地址,但是底层似乎并不是httpclient或者 resttemplate那样的,模拟浏览器的http臃肿的封装
hessian似乎可以穿透内网的sso,不需要登录过程就能实现调用。
对比下,resttemplate或者httpclient这两种完全模拟浏览器的框架,是不能穿透SSO的,必须要经过sso的登录过程。
dubbo
不太熟悉,以下是个人理解,是一种框架,支持以上各种协议,支持自定义dubbo协议,兼容性比较好。是一个胶水框架。
并且类似于 注册中心,支持各个微服务的互相注册和统一管理。
hessian
仅支持 post方式的http请求,源码内部是 对 httpUrlConnection 的封装和操作。
httpclient,Resttemplate : 两者类似,后者 更加符合 REST 风格。底层都是HttpURLConnection。
【求大神解惑】其中,hessian 的使用,需要指定http协议的请求地址,但是底层似乎并不是httpclient或者 resttemplate那样的,完全模拟浏览器的http臃肿的封装
hessian似乎可以穿透内网的sso,不需要登录过程就能实现调用。
对比下,resttemplate或者httpclient这两种完全模拟浏览器的框架,是不能穿透SSO的,必须要经过sso的登录过程。
这是非常困惑的一点,因为最近想用 resttemplate 取代 hessain,但是当本地测试的时候,rest发送请求到另外一个服务,需要经过内网的sso登录过程,否则就没办法http到那个服务。
目前只能曲线救国,设置Cookie头,来伪装登录,骗过SSO之后,才可以。
线上环境是 配置了 host文件,所以rest请求http不需要经过 sso的登录过程。
那么,本地测试,是不是也是直接配置 host文件,指定 域名的ip地址,之后,就饶过了sso的域名解析和登录服务了呢?
hessian的协议明显不是一般意义上的 http请求,求教,hessian是如何绕过 sso的呢?
【回复】
对于以上这个 hessian 穿透内网的疑问,后来咨询了 sso业务的人员,跟我的猜测一样,果然是 sso 放行了 *.hessian 结尾的所有请求,无需登录验证用户名和密码的过程,直接转发 http 到另外的服务。
困惑了好久,看来hessian 底层就是封装了 httpurlConnection 而已,没什么神奇的。