Apache的HttpClient和RMI、Hessian、Webservice这些......

Apache的HttpClient和RMI、Hessian、Webservice这些RPC框架,有什么区别?
我是用spring作为核心框架,spring对上述RPC框架有良好的支持。但是,我
看了N篇关于RPC的文章,都只说到上述3种,从没提过HttpClient。这是不是
说明,HttpClient根本不是RPC???
但是,在使用过程中,我发现HttpClient也应该是一种“远程调用机制”吧?
问题1、那它到底跟RPC有什么区别呢??
问题2、什么场景用RPC,什么场景用HttpClient?

2个回答

拿webservice举例。
客户端程序,可以是PHP,JAVA,Python各种语言编写,它们构建的应用程序通过Webservice与服务程序通信时,有多种连接方式,比如http,socket等。很多情况下考虑跨网络、跨平台,采用穿透性强的http(相对来说效率也低)。
在采用http通信时,需要按照http协议,封装包头,内容,同时接收服务端发回的数据,Java的HttpClient作为Apache提供的工具,可以让你很简单的构建一个请求,发给服务端。另外PHP等其它语言也有类似的工具。

soonfly
唐大麦 回复lrj1596: 你没有理解错。打个比方,你想去马尔代夫渡假(请求远程服务),可以选择不同的旅行社(各种RPC框架)让你轻松方便出行,且可以忽略签证,交通,住宿等各种细节,专心玩就行了。但不管你选哪个旅行社,总要通过交通工具(HttpClient可以认为是交通工具的一种)才能到达目的地。当然如果你觉得不怕麻烦,你完全可以不报名旅行社,自己弄个交通工具去马尔代夫也行。
大约 3 年之前 回复
lrj1596
lrj1596 假如用spring,那么可以把一些webservice服务注入到本地的某个bean上,然后直接就像调用本地对象的方法一样,调用webservice服务的方法。但是,就在这里,我有点困惑。如果用HttpClient,好像也完全可以达到调用远程方法的目的,只不过从代码上看,HttpClient只是获取了远程服务方法执行结束后的返回的结果(以json形式发回本地)。但是比较之前的将远程服务注入到本地bean这种方式。其实没有本质的不同,只不过是看起来像在本地调用远程服务方法,然后得到结果。请注意,依然是得到远程服务方法执行后返回的结果。我的困惑是,既然都是得到远程服务方法执行后返回的结果。那么HttpClient不就和鼎鼎大名的各类RPC框架一样了吗??可是它却不是一个RPC......也就是说,一个达到RPC效果的东西,却不是RPC。这不是很奇怪吗?我想这种奇怪的现象应该本不存在,应该是我哪个环节理解错了。请问,我是哪里错了呢?
大约 3 年之前 回复

刚表达有些问题,纠正一下:
有多种连接方式和服务端通信,比如http,socket等。对于Webservice来说,采用的是http方式。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐