- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Ice快速认识
Ice快速认识1.Ice概念Ice-Internet Communications Engine,是一种面向对象、跨平台、多语言的通信中间件。支持C++、Java、C#、VB、Python等,客户和服务器可以用不同的语言,可以运行在不同的操作系统和机器架构上,支持TCP/UDP。Ice应用组成:Ice对象——Ice对象是在本地或远地的地址空间中、能响应客户请求的实体。先由Slice定义,然后编译成特定语言版本;每个Ice对象有多个接口,支持特定操作,客户通过调用它的接口来发出请求;每个对象有唯一的对象标识。Servants——服务器端编写的类实例,体现Ice对象行为。代理(Proxies)——代理是Ice对象在客户端的代表,客户调用代理上的操作来获得服务端上Ice对象提供的服务。通信器(Ice::Communicator)——通信时,服务器和客户建立一个通信器,为通信进程分配和管理资源,是双方通信的专用线路。对象适配器(object adapter)——专用于服务器端的Ice API,把Ice run time与服务端编写的Servant类连接在一起。每个适配器绑定一个端口。Ice应用的结构如下:SliceSlice (Specification Language for Ice, Ice规范语言),用于对象接口定义与实现相分离的基础性抽象机制,可以把定义好的Ice对象映射成特定语言。2. Ice实例相同开发环境不同开发环境:Ice应用开发过程:1. 定义Ice对象(Printer.ice)module?Demo{???interface?Printer{???void?printString(string?s);???};??}??2. 编译成C++slice2cpp?Printer.ice??获得Printer.h/Printer.cpp3.服务端使用C++实现Ice对象(Servant类)#include?Ice/Ice.h??#include?Printer.h??using?namespace?std;??using?namespace?Demo;??class?PrinterI:public?Printer{??public:?????virtual?void?printString(const?string?s,const?Ice::Current);??};??void?PrinterI::printString(const?string?s,?const?Ice::Currrent){??coutsendl;??}??4.服务端编写Ice::CommunicatorPtr?ic;??//建立通信器??ic=Ice::initialize(argc,?argv);??//建立对象适配器,绑定端口??Ice::ObjectAdapterPtr?adapter=ic-createObjectAdapterWithEndpoints(??????????simplePrinterAdapter,default?-p?10000);??Ice::ObjectPtr?object?=?new?PrinterI;??//加入Ice对象实例,指定标识符??adapter-add(object,ic-stringToIdentity(SimplePrinter));??//启动适配器??adapter-activate();??//挂起该进程??ic-waitForShutdown();??5.客户编写#include?Ice/Ice.h??#include?Printer.h??using?namespace?std;??using?namespace?Demo;??Ice::CommunicatorPtr?ic;??//建立通信器??ic?=?Ice::initialize(argc,?argv);??//获得Ice对象代理,SimplePrinter-对象标识符,default?-p?10000-协议与端口??Ice::ObjectPrx?base?=?ic-stringToProxy(SimplePrinter:default?-p?10000);??//向下转换??PrinterPrx?printer?=?PrinterPrx::checkedCast(base);??if?(!printer)?throw?Invalid?proxy;??//调用操作??printer-printString(Hello?World!);??6.编译//服务端??c++?-I.?-I$ICE_HOME/include?-c?Printer.cpp?Server.cpp??c++?-o?server?Printer.o?Server.
文档评论(0)