第4讲 远程调用

4.1 简介

远程过程调用范型
-请求—应答协议,描述了一个基于消息传递的范型,支持在客户/服务器计算中遇到的消息双向传输
-远程过程调用(RPC),将传统的过程调用模型扩展到分布式系统中。允许客户程序透明地调用在服务程序中的过程。
-远程方法调用(RMI),基于对象的编程模型扩展,允许不用进程运行的对象通过其彼此通信。是对本地方法调用的扩展。

4.2 请求—应答协议

这种通信设计用于支持典型客户/服务器交互中任务和信息的交换
通常情况下,请求—应答通信是同步的,在来自服务器端的应答到达之前客户端进程是阻塞的。从服务器端的应答是对客户端进程的有效确认,因此也是可靠的。

客户—服务器交换的实现通常采用TCP流的形式
接下来介绍的客户—服务器交换实现是通过Java UDP数据报API中的send和receive操作描述的。

TCP流协议存在不必要的开销:
应答在请求之后,所以确认是多余的
建立连接需要三次握手协议
大部分只传递少量的参数,流控制也是多余的

HTTP:请求—应答协议的例子
Web服务器有两种不同的实现管理资源的方法:
-数据,如HTML网页的正文或图片或面板的类
-程序,如Servlets或PHP或运行在Web服务器端的Python程序
客户端请求指定一个包含Web服务器上的DNS主机名和Web服务器上选择端口的URL和在该服务器上资源的标识符。
HTTP协议指定一个消息,该消息涉及:
-请求—应答交互、方法、参数、结果及将它们的编码规则
-支持一个固定的方法集合(GET,PUT,POST等)
-准许内容协商和密码式验证

内容协商(content negotiation):客户端请求中包含说明他们能够接受的数据表示形式的信息,是服务器能选择出对于客户端最合适的数据表示形式
认证(authentication):凭据(credential)和质询(challenge)用于密码式验证,试图去访问受密码保护的区域时,服务器的应答包含了适用于资源的质询,当客户端接收到质询,它令用户输入用户名和密码,并提交与后续请求关联的凭据。

HTTP方法
-GET:请求在参数中给出的URL对应的资源
如果URL指向数据,那么服务器就会返回该URL指定的数据
如果URL指向一个程序,那么服务器就会运行该程序并把结果返回客户端
URL中也可以包含参数,例如:GET方法能够将表单的内容以程序参数的形式发送出去
-HEAD:请求和GET相同,但是不返回任何数据
仅返回与数据相关的信息,例如最后一次修改的时间,数据格式和大小。
-POST:指定资源(如程序)的URL,该资源可以处理请求消息体中提供的数据
执行数据的处理过程与URL所指定的程序功能相关。
当某个执行活动可能改变服务器端的数据时使用POST方法。
POST方法可以处理:
向数据处理过程提供数据
发布消息到邮件列表或更新别表成员的详细信息
通过追加操作扩展数据库
-PUT:要求请求中提供的数据在存储时以指定的URL作为标识符,要么作为现有资源的修改,要么作为一种新资源。
-DELETE:服务器删除给定URL所标识的资源,服务器可能不经常允许该操作,在这种情况下将返回请求失败的应答。
-OPTIONS:服务器提供给客户端能够应用到给定URL及其特定需求的方法列表(例如GET、HEAD、PUT)
-TRACE:服务器返回请求的消息,用于诊断的目的。

PUT和DELET是幂等操作。但是POST操作未必是这样。
代理服务器可能中断上面描述的请求,也可能缓存对GET和HEAD的应答

4.3 远程过程调用

远程过程调用(RPC)是分布式计算的重大突破,使得分布式编程和传统编程相似,即实现了高级的分布透明性。
将传统的过程调用模型扩展到分布式环境方式实现。
在RPC中调用远程机器上的程序就像这些程序在本地的地址空间中一样。
底层RPC系统隐藏了分布式环境重要的部分,包括对参数和结果的编码和解码、消息传递以及保留过程调用要求的语义。
该概念由Birrell和Nelson在1984年首次提出

4.4 远程方法调用

远程方法调用(Remote Method Invocation,RMI)
与RPC紧密联系,RMI扩展到了分布式对象的范畴
访问对象能够调用位于潜在的远程对象上的方法
RPC和RMI的共性如下:
-都支持接口编程
-都是典型的基于请求—应答协议构造的,并提供一系列如最少一次、最多一次调用语义
-都提供相似程度的透明性
RMI的特殊性:
-程序员能够在分布式系统软件开发中使用所有面向对象编程的功能
-基于面向对象系统中对象标识的概念,在基于RMI系统中的所有对象都有唯一的对象引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值