




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第四讲远程过程调用,1、动因与实例2、工作原理3、编排/还原4、请求分派,内容,1、动因与实例,开发基于SOCKET的网络软件非常复杂FTPTELNET位于不同机器上的软件互操作困难连接管理异构导致RPC(RemoteProcedureCalling)的产生主要实例:SUN公司等提出的ONC(OpenNetworkComputing)RPC主要由SUN予以实现OSF(OpenSoftwareFoundation)RPC影响最大主要由DCE(DistributedComputingEnvironment)实现DCE是OSF提出的分布计算体系结构,2、工作原理,Deposit(,1000,),继续运行,启动服务器上的存款过程,intDeposit(number),returntotal+number;,客户端程序,服务器端程序,以对某银行帐户的一个存款过程为例:,Network,LocalCall,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:ObjectAdaptor)在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:,programACCOUNTversionACCOUNT_VERintdeposit(int)=2;intwithdraw(int)=1;=1;=0 x20010929;,编译后生成三个主要文件:account.haccount_clnt.caccount_svc.c,externC#defineACCOUNT0 x20010929#defineACCOUNT_VER1#definedeposit2externint*deposit_1(int*,CLIENT*);externint*deposit_1_svc(int*,structsvc_req*);#definewithdraw1externint*withdraw_1(int*,CLIENT*);externint*withdraw_1_svc(int*,structsvc_req*);externintaccount_1_freeresult(SVCXPRT*,xdrproc_t,caddr_t);,account.h,account_clnt.c,staticstructtimevalTIMEOUT=25,0;int*deposit_1(int*argp,CLIENT*clnt)staticintclnt_res;memset(char*),intmain(intargc,char*argv)registerSVCXPRT*transp;pmap_unset(ACCOUNT,ACCOUNT_VER);transp=svctcp_create(RPC_ANYSOCK,0,0);if(transp=NULL)fprintf(stderr,%s,cannotcreatetcpservice.);exit(1);if(!svc_register(transp,ACCOUNT,ACCOUNT_VER,account_1,IPPROTO_TCP)fprintf(stderr,%s,unabletoregister(ACCOUNT,ACCOUNT_VER,tcp).);exit(1);svc_run();fprintf(stderr,%s,svc_runreturned);exit(1);,account_svc.c,staticvoidaccount_1(structsvc_req*rqstp,registerSVCXPRT*transp)unionintdeposit_1_arg;intwithdraw_1_arg;argument;char*result;xdrproc_t_xdr_argument,_xdr_result;char*(*local)(char*,structsvc_req*);switch(rqstp-rq_proc)caseNULLPROC:(void)svc_sendreply(transp,(xdrproc_t)xdr_void,(char*)NULL);return;casedeposit:_xdr_argument=(xdrproc_t)xdr_int;_xdr_result=(xdrproc_t)xdr_int;local=(char*(*)(char*,structsvc_req*)deposit_1_svc;break;casewithdraw:_xdr_argument=(xdrproc_t)xdr_int;_xdr_result=(xdrproc_t)xdr_int;local=(char*(*)(char*,structsvc_req*)withdraw_1_svc;break;,default:svcerr_noproc(transp);return;memset(char*),2、编写实现具体服务功能的代码,#includeaccount.hinttotal=10000;int*deposit_1_svc(int*argp,structsvc_req*rqstp)staticintresult;total=total+argp;result=total;printf(“newtotal=%s”,total);return,server.c,3、编译、连接,产生可执行的服务器程序,ccoserverserver.caccount_svc.caccount.h,4、编写客户端代码,#includeaccount.hvoidaccount_1(char*host)CLIENT*clnt;int*result_1;intdeposit_1_arg=1000;int*result_2;intwithdraw_1_arg=2000;clnt=clnt_create(host,ACCOUNT,ACCOUNT_VER,tcp);result_1=deposit_1(,client.c,5、编译、连接,产生
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商场租赁合同补充协议范本(营业时间限制)
- 基于环保理念的离婚协议书范本:共同财产绿色管理
- 离婚时共同债务承担协议
- 民航业飞机融资租赁担保合同风险分析与处置
- 住宅小区物业服务合同续签及社区文化活动协议
- 离婚抚养费支付与子女社会实践支持协议范本
- 公共停车场运营合同期限延长与增值服务补充协议
- 旅游企业正式员工劳动合同与旅游服务协议
- 2025物资采购合同变更协议书
- 2025-2030封装晶体振荡器行业技术标准国际化参与路径分析
- 借款合同中国农业银行担保借款合同3篇
- 雨水管网扩容改造工程建设方案
- 2025年国家电网招聘之电网计算机考试题库含答案(精练)
- 苏教版一年级数学上册月考测试卷(一)(范围:游戏分享至第一单元)(含答案)
- 2025至2030中国电镀工业园区行业发展趋势分析与未来投资战略咨询研究报告
- 2025-2026学年人教精通版四年级英语上册(全册)教学设计(附目录)
- 电镀行业环境执法现场检查要点
- 趣味成语 完整版PPT
- 急性冠脉综合征的诊断与鉴别诊断ppt课件
- 喷漆质量处罚条例
- 回转支承选型计算
评论
0/150
提交评论