ICE客户和服务器结构

上传人:ta****u 文档编号:174430082 上传时间:2022-12-15 格式:DOCX 页数:6 大小:152.09KB
收藏 版权申诉 举报 下载
ICE客户和服务器结构_第1页
第1页 / 共6页
ICE客户和服务器结构_第2页
第2页 / 共6页
ICE客户和服务器结构_第3页
第3页 / 共6页
资源描述:

《ICE客户和服务器结构》由会员分享,可在线阅读,更多相关《ICE客户和服务器结构(6页珍藏版)》请在装配图网上搜索。

1、参考Ice分布式程序设计马维达 译、客户与服务器的结构Ice客户与服务器内部的逻辑结构如下图所示:客户端应用Ice APIIce API骨架对氯适配服务器ICE孩心豳生成的代码客户与服务器都由这样一些代码混合而成:应用代码、库代码、根据Slice定 义生成的代码: Ice核心为远地通信提供了客户端和服务器端运行时支持。其中的大量代码 所涉及的是网络通信、线程、字节序,以及其他许多与网络有关的问题,我 们的应用代码应该与这些问题隔离开来。代理代码是根据你的Slice定义生成的。如果你调用代理的某个函数,就会 有一个RPC消息被发给服务器,调用服务端目标对象上的某个对应的函数。在上文中提到,如下客

2、户代码中,DrinterPrx代理类是由slice2java命令编 译prin ter.ice文件生成的,Ice. ObjectPrx base = ic.stringToProxy(SimplePrinter:default -p 10000);Pri nt erPrx pri nter = Pri nt erPrxHelper. checkedCas t (base);printer. printString(Hello World!);当调用prin ter代理中的prin tSt ring方法,客户会发送RPC消息,调用服务 器上Prin terI类对象中的prin tString方法

3、。要想与某个Ice对象联系,客户必须持有这个对象的代理。对客户而言, 代理就是Ice对象的代表(该对象可能在远地)。一个代理充当的是一个Ice对 象的本地大使,客户端中Prin terPrx代理对象就是Prin terl类在客户端的本地的 大使。当客户调用代理上的操作时,Ice run time会:1. 定位Ice对象2. 如果Ice对象的服务器没有运行,就激活它3. 在服务器中激活Ice对象4. 把所有in参数传送给Ice对象5. 等待操作完成6. 把所有out参数及返回值返回给客户(或在发生错误的情况下抛出异常) 代理封装了完成这一系列步骤所必需的全部信息。特别地,代理包含有: 寻址信息:

4、用于让客户端run time联系正确的服务器 对象标识:用于确定服务器中的哪一个对象是请求的目标 可选的facet标识符:用于确定代理所引用的是对象的哪一个facet骨架代码也是根据你的Slice定义生成的,因此,与你用Slice定义的对象 和数据的类型是对应的。骨架代码是客户端代理代码的服务器端等价物:它 提供了向上调用接口,允许Ice run time把控制线程转交给你编写的应用代 码。 对象适配器是专用于服务器端的Ice API的一部分:只有服务器才使用对象 适配器。对象适配器有若干功能:1、对象适配器把来自客户的请求映射到servant对象上的特定方法。换句话 说,对象适配器会跟踪在内

5、存中,都有哪些servan t,其对象标识又是什么。对 象适配器与一个或多个传输端点关联在一起。servant就是服务器开发者编写的类,客户端发送的请求,最终调用的是 servant实例上的方法。如上文中的服务端代码片段,Ice.ObjectAdapter adapter =ic.createObjectAdapterWithEndpoints( SimplePrinterAdapter, default -p 10000);端点“ defaul t -p 10000 与adap ter适配器绑定,串“ SimplePrinterAdapter 代表适配器的名称。如果与某个适配器关联的传输端点

6、不止一个,你可以通过多种传输机制到达 在该适配器中的servan t。例如,为了提供不同的服务质量和性能,你可以把一 个TCP/IP端点和一个UDP端点与一个适配器关联在一起。2、对象适配器要负责创建可以传给客户的代理。对象适配器知道它的每个 对象的类型、标识,以及传输机制的详细情况,并且会在服务器端应用代码要求 创建代理时在其中嵌入正确的信息。每个对象适配器都维护有一个叫作活动servant映射表(active servant map)的数据结构。活动servant映射表(简称为ASM)是一个查找表,用于把对 象标识映射到serva nt。当客户把操作调用发给服务器时,请求的目标是特定的传输

7、端点。传输端点 隐含地标识了请求所针对的对象适配器(因为同一个端点只能绑定到一个对象适 配器)。客户藉以发送请求的代理含有对应的对象的标识,客户端run time会在 线路上随调用一起发送这个对象标识。对象适配器继而使用这个对象标识、在它 的ASM中查找正确的servant,把调用分派给它。如上文中的服务端代码片段:Ice.Object object = new Printerl();adapter.add(object,Ice. Util. s tringToIde ntity(SimplePrinter);Add方法将object对象注册到adapter适配器中,并使用串SimplePri

8、nter”创建一个对象标识,这样在适配器的ASM表中就有了一个 以串“ SimplePrinter 标识的 serva nt 对象 o bject。在客户端代码中,使用串SimplePrinter:default -p 10000创建Printerl在客户端的代理对象,串“default -p 10000”即代表适配器, 串“SimplePrinter”即为ASM表中的对象标识,当客户端使用代理对象调用 PrinterI上的printString 方法时,就可以在AS M中定位到对应的对象。二、Slice (Ice规范语言)简介每个Ice对象都有一个接口,该接口具有一些操作。接口、操作,还有在

9、客 户及服务器间交换的数据的类型,都是用Slice语言定义的。如上文中的prin ter.ice文件:module demo interface Printer void printString(string s);Slice允许你以一种独立于特定编程语言(比如C+或Java)的方式定义客 户一服务器的合约。Slice定义由一个编译器编译成特定编程语言的API,也就 是说,与你所定义的接口和类型对应的那一部分API,会由生成的代码组成。1.客户和服务器使用相同的开发环境编写任何Ice应用的第一步都是要编写一个Slice定义,其中含有应用所用 的各个接口。下图说明客户和服务器都用C+开发的情况。

10、Slice编译器根据源文件Printer.ice中的Slice定义生成了两个文件:一个头文件(Printer.h)和一 个源文件(Printer.cpp)。下图说明客户和服务器都用java开发的情况。Slice编译器根据源文件 Printer.ice中的Slice定义生成了若干个文件,这些主要分成两部分,一部分 是客户端程序依赖的类文件,一部分是服务端程序依赖的类文件。2.客户和服务器使用不同的开发环境如果客户和服务器是用不同的语言开发的,它们不能共享任何源文件或二进 制组件。例如,用Java编写的客户不能包括C+头文件。下图说明客户用Java编写,而对应的服务器用C+编写的情况。在这种情况 下,客户和服务器开发者是完全独立的,分别使用自己的开发环境和语言映射。 客户和服务器开发者之间的唯一链接是它们各自使用的Slice定义。JavaC+可C+ Ice Run-Time 咋SI ice-to-Java编译器fFClient java*.j avaJ一-、VJava Ice Run-Time 库客户端可SliceSlice-to-C+編译器Server cpp

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!