ImageVerifierCode 换一换
格式:DOCX , 页数:19 ,大小:162.41KB ,
资源ID:17787701      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17787701.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(使用rpcgen构建分布式程序地例子Word格式文档下载.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

使用rpcgen构建分布式程序地例子Word格式文档下载.docx

1、利用远程过程调用,程序员首先设计一个解决问题的常规程序,接着将其 划分成若赶干片,这些程序片运行在两台或更多的计算机上。程序员可遵循良好的设计原则,以便使代码模块化并且可维护。 在理想的情况下,远程过程调用提供的不只是抽象上的概念。它允许程序员在将一个程序划分成若干片之前,先构建,编译和测试一个解决该问题的常规程序的版 本,以便确保能够正确解决问题。不但如此,因为RPC以方法调用为边界划分程序,所以将程序划分为本地部分和远程部分并不会引起程序结构的很大变化。实际 上,将某些过程从一个程序转移到远程机器上时,有可能不需要改变。1.3 常规过程调用的概念性模型 如下图所示,为常规的程序调用。本地过

2、程调用.jpg1.4 远程过程调用模型 远程过程调用模型使用了和常规程序一样的过程抽象,但是它允许一个过程的边界跨越两台计算机。如下图所示。远程过程调用.jpg1.5 常规过程调用的执行和返回 程序从一个主程序开始执行,并一直继续下去,直到遇到一个过程调用。这个调用使程序的执行转入到某个指定的代码处继续执行。常规过程调用的执行流程如下图所示:常规过程调用.jpg1.6 分布式系统的过程模型 在分布式系统中,其中的某个过程有可能在另外的机器上,因此,其调用过程模型如下图如示:分布式中的过程调用.jpg1.7 客户-服务器和RPC之间的对比 远程过程调用允许程序员以一种他所熟悉的环境来思考客户和服

3、务器的交互,如同常规的过程调用,远程过程调用把控制权传递给被调用的进程。也像常规过程调用一样,在调用进程中,系统把调用过程的执行挂起。而只允许被调用过程执行。 当远程程序发出响应时,这对应于在常规过程调用中执行return。控制权返回给调用者,被调用过程停止执行。嵌套的过程调用的想法也可应用到远程过程调用。远程过程调用也许要调用另一个远程过程。如上图所示。二. 分布式程序的生成原理 RPC的实现包括一个工具,它自动地生成实现分布式程序所需要的大多数代码。这个工具叫做rpcgen,它读取一个规约文件作为输入,生成C的源文件作为 输出。规范文件包含常量,全局数据类型,全局数据以及远程过程(包括过程

4、参数和结果类型)的声明。rpcgen产生的代码包含了实现客户和服务器程序所需 要的大部分源代码。具体地说,rpcgen包括参数整理,发送RPC报文,把传入调用分派到正确的过程,发送应答,在参数和结构的外部表示和本地数据表示 之间进行转换。rpcgen的输出与应用程序和程序员编写的少数文件相结合后,便产生出了完整的客户和服务器程序。 rpcgen读取输入文件,该文件包含有对远程过程的说明。它产生四个输出文件,每个文件都包含有源代码,如果输入的文件(即规约文件)具有名字q.x, 则输出的文件如下所示:q.h:常量和类型的声明q_xdr.c XDR过程调用q_clnt.c 客户端的通信接口q_svc

5、.c 服务器端的通信接口具体步骤在第三部分。三. 分布式程序的生成步骤 在这里,举的例子就是Douglas E.Comer书上的那个例子。这个例子重点在于解释rpcgen 如何工作的。3.1 查找字典 在该例子中,考虑实现一个简单的数据库功能的程序。该数据库提供四个基本的操作:初始化,插入一个新的条目,删除一个条目,查找一个条目。假设每个条目都 是一个单词。因此该数据库的功能就可以看作是一个字典。应用程序插入一组单词,接着使用数据库来检查新单词,以便知道这个单词是否在该字典中。3.2 构建程序的八个步骤(1)构建解决该问题的常规应用程序 要构建这个字典应用例子的分布式版本,第一步要求程序员构造

6、解决该问题的常规程序。文件dict.c包含了该常规程序:CODE:/* dict.c */#includestdlib.hctype.hstring.h#define MAXWORD 50 /* 每个单词的长度限制*/#define DICTSIZ 100 /* 字典一共可以存放多少个单词 */char dictDICTSIZMAXWORD+1;int nwords = 0;/* nextin(): 读入命令与单词*/int nextin(char *cmd, char *word) int i, j; char buf100 = 0; if (fgets(buf, sizeof(buf)-1

7、, stdin) = NULL) return -1; for (i = 0; i 100; i+) if (bufi != ) break; if (i = 100) *cmd = bufi; while (1) i+; if (bufi = continue; else if (bufi = n return 0; else j = 0; while (bufi ! *word+ = bufi; j+; return j;* initw(): 初始化这个字典int initw() nwords = 0; return 1;* insertw(const char *word): 向这个字典

8、中加入单词int insertw(const char *word) strcpy(dictnwords, word); nwords+; return nwords;* deletew(const char *word): 从这个字典中删除单词int deletew(const char *word) int i; nwords; if (strcmp(word, dicti) = 0) nwords-; strcpy(dicti, dictnwords);* lookupw(const char *word): 在字典中查找某个单词int lookupw(const char *word)

9、int main(int argc, char *argv) char wordMAXWORD+1; char cmd; int wrdlen; wrdlen = nextin(&cmd, word); if (wrdlen #define RPC_CLNT#includerdict.hextern CLIENT *handle;static int *ret; ret = initw_1(0, handle); return ret = NULL ? 0 : *ret; char *arg; arg = &word; ret = insertw_1(arg, handle); ret = deletew_1(arg, handle); ret = lookupw_1(arg, handle);服务器端接口例程rdict_sif.c如下:/* rdict_sif.c */#define RPC_SVCstatic int retcode;int initw(void), insertw(char *), deletew(char *), lookupw(char *);int *insertw_1_svc(char *w, struct svc_req* rqstp) retcode = insertw(*(char*)w); return &retcode;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1