欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    《远程过程调用》PPT课件.ppt

    • 资源ID:5611356       资源大小:275.99KB        全文页数:24页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    《远程过程调用》PPT课件.ppt

    第 四 讲远程过程调用,1、动因与实例2、工作原理3、编排/还原4、请求分派,内 容,1、动因与实例,开发基于SOCKET的网络软件非常复杂FTPTELNET位于不同机器上的软件互操作困难连接管理异构导致RPC(Remote Procedure Calling)的产生主要实例:SUN公司等提出的ONC(Open Network Computing)RPC主要由SUN予以实现OSF(Open Software Foundation)RPC影响最大主要由DCE(Distributed Computing Environment)实现 DCE是OSF提出的分布计算体系结构,2、工作原理,Deposit(,1000,),继续运行,启动服务器上的存款过程,int Deposit(number),return total+number;,客户端程序,服务器端程序,以对某银行帐户的一个存款过程为例:,Network,Local Call,send,receive,send,receive,(1)调用过程,客户端程序,服务器端程序,1、客户按本地调用的方式 直接调用本地的客户指代客户指代具有与服务器相同的过程接口2、客户指代 将客户的调用请求进行加工、打包向底层通信机制(如套接字)发出请求消息客户指代不进行任何逻辑处理只是一个中介3、客户端通过底层的通信机制将消息传送给服务器端的底层通信机制,过程描述:,4、服务器 需要部分地解析消息找出客户希望调用的服务器程序5、服务器指代对消息进行解析从中获得调用者的参数然后调用服务器程序6、服务器程序执行相应的过程7、服务器程序将结果返回给服务器指代8、服务器指代将结果打包向底层通信机制发出应答消息9、服务器端通信机制将消息传送给客户端通信机制,10、客户端节点上也可能有多个调出点通信机制需要部分地解析返回的消息找出消息应该返回给哪个客户程序并将消息发送给对应的客户指代 11、客户指代从消息中解析结果返回给客户程序,(2)编排/还原,指代(Stub)的主要工作包括:(1)建立客户与服务器之间的连接(2)将客户的高层调用语句打包为一条底层的请求消息 这一过程在RPC中被称为编排(marshal)(3)等待服务器返回应答消息(4)将来自服务器底层的应答消息解析为可以返回的数据 这一过程在RPC中被称为还原(unmarshal)(5)将返回值传送给客户程序 需要特别处理:编码、字节序 等问题,(3)请求分派,服务器端的指代:除了需要进行编排、还原外还需要区分客户所请求的过程名然后将客户的请求分派(dispatch)给正确的过程“指代”目前主要被用于专门代表客户端的代理程序而服务器端则由新的机制予以支持在CORBA中专门分离出了对象适配器(OA:Object Adaptor)在EJB中发展出了构件容器用于在运行过程中专门管理构件的各种状态此时的服务器端不仅负责请求分派还负责向底层机制的注册(以方便请求的定位)以及过程的激活(以加强系统的灵活性)等等功能,三、基于RPC的开发过程,1、定义并编译接口 2、编写实现具体服务功能的代码3、编译、连接,产生可执行的服务器程序4、编写客户端代码5、编译、连接,产生客户程序6、运行服务器端程序7、运行客户端程序,客户端开发过程,服务器端开发过程,服务器端程序,IDL编译器(rpcgen),客户端程序,IDL,account.h,account_clnt.c,account _svc.c,server.c,client.c,rpclib.o,1、定义并编译接口,仍然结合银行帐号的例子 接口定义文件account.x:,program ACCOUNT version ACCOUNT_VER int deposit(int)=2;int withdraw(int)=1;=1;=0 x20010929;,编译后生成三个主要文件:account.h account_clnt.c account_svc.c,extern C#define ACCOUNT 0 x20010929#define ACCOUNT_VER 1#define deposit 2extern int*deposit_1(int*,CLIENT*);extern int*deposit_1_svc(int*,struct svc_req*);#define withdraw 1extern int*withdraw_1(int*,CLIENT*);extern int*withdraw_1_svc(int*,struct svc_req*);extern int account_1_freeresult(SVCXPRT*,xdrproc_t,caddr_t);,account.h,account_clnt.c,static struct timeval TIMEOUT=25,0;int*deposit_1(int*argp,CLIENT*clnt)static int clnt_res;memset(char*),int main(int argc,char*argv)register SVCXPRT*transp;pmap_unset(ACCOUNT,ACCOUNT_VER);transp=svctcp_create(RPC_ANYSOCK,0,0);if(transp=NULL)fprintf(stderr,%s,cannot create tcp service.);exit(1);if(!svc_register(transp,ACCOUNT,ACCOUNT_VER,account_1,IPPROTO_TCP)fprintf(stderr,%s,unable to register(ACCOUNT,ACCOUNT_VER,tcp).);exit(1);svc_run();fprintf(stderr,%s,svc_run returned);exit(1);,account_svc.c,static void account_1(struct svc_req*rqstp,register SVCXPRT*transp)union int deposit_1_arg;int withdraw_1_arg;argument;char*result;xdrproc_t _xdr_argument,_xdr_result;char*(*local)(char*,struct svc_req*);switch(rqstp-rq_proc)case NULLPROC:(void)svc_sendreply(transp,(xdrproc_t)xdr_void,(char*)NULL);return;case deposit:_xdr_argument=(xdrproc_t)xdr_int;_xdr_result=(xdrproc_t)xdr_int;local=(char*(*)(char*,struct svc_req*)deposit_1_svc;break;case withdraw:_xdr_argument=(xdrproc_t)xdr_int;_xdr_result=(xdrproc_t)xdr_int;local=(char*(*)(char*,struct svc_req*)withdraw_1_svc;break;,default:svcerr_noproc(transp);return;memset(char*),2、编写实现具体服务功能的代码,#include account.hint total=10000;int*deposit_1_svc(int*argp,struct svc_req*rqstp)static int result;total=total+argp;result=total;printf(“new total=%s”,total);return,server.c,3、编译、连接,产生可执行的服务器程序,cc o server server.c account_svc.c account.h,4、编写客户端代码,#include account.hvoid account_1(char*host)CLIENT*clnt;int*result_1;int deposit_1_arg=1000;int*result_2;int withdraw_1_arg=2000;clnt=clnt_create(host,ACCOUNT,ACCOUNT_VER,tcp);result_1=deposit_1(,client.c,5、编译、连接,产生客户程序,cc o client client.c account_clnt.c account.h,6、运行服务器端程序7、运行客户端程序服务器端应当显示:new total=11000new total=9000客户端应当显示:result=11000 result=9000,思 考 题,消息传递、互操作、协同工作之间的关系是什么?RPC是如何工作的?不同互操作体系的异同点是什么?,

    注意事项

    本文(《远程过程调用》PPT课件.ppt)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开