ICE tutorial

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

ICE专题ICE简介ICE(InternetCommunicationsEngine)是一个为现实中程序员而写的中间件平台。作为一个高性能的互联网通信平台,ICE包含了很多分层的服务和插件(Plug-ins),并且简单、高效和强大。ICE的自由使用遵从GNU的GPL(GNUGeneralPublicLicens)许可的条款。ICE也有商业的许可证,如果你想将ICE使用在你的私有产品中,那么你应该使用ICE的商业许可证。可以联系sales@zeroc.com来获得这方面的更多信息。ICE当前支持C++、Java、C#、VisualBasic、Python和PHP编程语言,并支持在多种操作系统上运行。更多的操作系统和编程语言将会在以后的发布中支持。ICE有以下几部分组成:SliceICE的规范语言,跟CORBA的IDL(InterfaceDefinitionLanguage)等价的东西。Slice建立了客户端和服务器端共同遵守的契约:接口。Slice也用来描述对象持久数据。SliceCompilersSlice的规范语言可以影射成多种编程语言。目前ICE支持C++,Java,Python,PHP,C#和VB的语言影射。Ice的客户端和服务器端协同工作,而不会知道分别实现的是何种编程语言。IceIce的核心库。在众多的特性当中,Ice核心库通过一个高效的协议(包含TCP/UDP层上协议压缩)来管理所有的通信任务,为多线程服务器提供了一个灵活的线程池,并且有特别的功能来支持上百万对象的可扩展性。IceUtil一些常用的功能函数集。例如Unicode处理和多线程编程,是用C++写成。IceBox一个专用于ICE应用的应用服务器。ICEBox可以方便地运行和管理动态加载、共享库或java类的形式Ice的服务。IcePack一个成熟的服务激活和部署工具。IcePack能大大简化在异构网络之间部署应用的复杂性。只要简单的编写XML格式的一个部署描述文件,IcePack就能自动处理剩下的工作。FreezeFreeze提供了IceServants对象的自动持久性。通过几行代码,一个应用就可以生成一个高度可扩展的逐出器(evictor)来高效地管理持久对象。FreezeScript在大的软件项目里,持久对象的数据类型改变很常见。为了昀小化这些变化的影响,FreezeScript提供了相应的工具来检查和移植Freeze生成的数据库。这些工具支持XML格式的配置脚本,易于使用。IceSSL用于Ice核心的动态的SSL传输插件。提供了认证、加密和消息完整性,使用工业标准的SSL协议来实现。Glacier面向对象中间件平台的一个昀大的挑战是安全性和防火墙。Glacier是Ice的防火墙解决方案,它大大简化了安全程序的部署。Glacier认证和过滤客户的请求并允许服务器通过安全的方式回调客户端对象。结合IceSSL的使用,Glacier提供了强大的安全解决方案,即安全,又易于配置管理。IceStorm一个支持联盟的消息服务。和大多数的其他消息和事件服务相比,IceStorm支持有类型的事件,这意味着通过联盟广播一个消息和调用一个接口上的一个方法一样容易。IcePatch一个软件修补和分发的服务。为确保运行的软件是昀新的版本,要经常更新软件,这是一件乏味的工作。IcePatch自动更新在某个目录层次下的文件。只有需要更新的文件会下作到客户端,为了快速的下载更新,IcePatch使用的高效的压缩算法。如想了解更多的详细信息,可以到的更多文档。ICE在Linux下的安装Ice的安装从年初的一期《程序员》杂志上了解到ICE以后,因为其对比于CORBA具有简单、高效、易用的特点,所以一直都有留意。之前也有一段时间下载了Ice1.x版本和相应的文档来研究,但因工作忙,中断了一段时间。Ice的主页:这几天工作稍微轻松点,有点时间,就继续研究Ice2.1.1版本。在学习的过程中,免不了要安装的。这篇文章就是想说说安装的问题。其实Ice-2.1.1安装算是蛮简单的。因为像比较新的Linux操作系统上,Ice所需的辅助软件包都已经有了,如果你装的系统确实没有这些软件,可以在Ice的下载页面上下载到第三方的软件包,然后安装,安装这些都不难,主要是要看软件相应的readme和install类型的文档。我在Fedora3上安装,上面带了expat,openssl,db4.2,bzip2,所以基本不用装第三方的软件。唯一一个问题是:Fedora3上的db4.2没有安装db的C++开发库,所以需要重新编译安装db。===========STEP1:安装db=============================安装db的文档在db包的docs里面有html格式的说明文档,很简单。解开db的tar/zip包后:$cddb-ver$cdbuild_unix$../dist/configure--prefix=/usr--enable-cxx$make$su#makeinstall==========STEP2:安装Ice2.1.1包====================解开Ice-2.1.1.tar.gz包后$cdIce-2.1.1$viconfig/Make.rules#修改prefix为/usr$make$su#makeinstall这样Ice就安装好了。==========STEP3:安装IcePy============================因为自己想结合之前学习python,刚好ice也支持python语言,所以决定安装IcePy包,如果你只用C++开发的话,IcePy可以不装。解开IcePy.xx.tar.gz后$cdIcePy-2.1.1$viconfig/Make.rules增加一行在文件的昀前面:ICE_HOME=/usr修改prefix=/usr然后用root权限#ln-s/usr/lib/python2.4/usr/python#不同版本的python,/usr/lib/pythonx.x目录有点不同$make$su#makeinstall#ln-s/usr/lib/IcePy.so/usr/lib/python2.4/IcePy.so至于用两个ln建立两个连接主要是省去运行Icepython程序的时候,设置环境变量的麻烦。因为IcePython的文件都安装到了python的缺省目录下了,这样会方便很多。附一个C++编译的问题:由于我按照书上的例子来学习Ice,所以文件服务器的服务器端那章里面的NodeI类定义如下:classNodeI:virtualpublicNode{public:virtualstd::stringname(constIce::Current&)const;NodeI(conststd::string&,constDirectoryIPtr&parent);staticIce::ObjectAdapterPtr_adapter;private:conststd::string_name;DirectoryIPtr_parent;NodeI(constNodeI&);voidoperator=(constNodeI&);};里面有static的类成员_adapter,由于久未用C++,不记得要在.cpp实现文件里加:Ice::ObjectAdapterPtrFilesystem::NodeI::_adapter;定义,所以g++连接老报没有定义_adapter的错误,郁闷了一段时间才记起来。而书上的例子并没有提到定义这个东西,如果你是C++新手或像我这样久未用C++的人,一时还找不着北呢。ICE起步昀早开始接触ICE是在2005,3月份,当时一个朋友向另一个正打算研究corba的朋友强烈的推荐了ICE.参考:什么是ICE?ICE(internetcommunicationsengine)是适用于异种环境的面向对象中间件平台。那么什么是中间件呢?比较流行的定义是:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源。中间件位于客户机/服务器的操作系统之上,管理计算资源和网络通讯。从中间件的定义可以看出,中间件是一类软件,而非一种软件;中间件不仅仅实现互连,还要实现应用之间的互操作;中间件是基于分布式处理的软件,定义中特别强调了其网络通讯功能.(如此说来,twisted就是一个中间件)目前中间件的三大主流平台:1.OMG的CORBA2.sun的J2EE(包括ejb等技术)3.MS的MicrosoftDNA2000(DCOM/COM/COM+等技术)关于中间件的介绍:的一些概念•服务器/客户端(server/client):这个的定义与一般的定义相同,主动的一方被认为是client•ICE对象:跟OOP中的对象类似,不同之处在于,在分布式的环境中,同一个ICE对象在不同的地址空间中都可能存在着.ICE对象也提供了一组接口(facets).ICE对象还有一个特殊的接口:主接口.•代理(proxies):是ICE对象引用,代理是在客户地址空间,客户对ICE对象的操作就是通过代理来进行的.代理封装了完成:ICE对象的寻址(包括服务器的寻址),激活ICE对象,传入参数,等待执行并返回执行结果•servant:在服务器上的执行体,ICE对象对服务器的操作就是通过调用servant.•昀多一次原则:一次对目的的访问,只会执行一次(并不排除出错重试)ICE的5个服务Summary这里介绍了ICE的五个服务Ice为分布式开发提供了技术完善的客户-服务平台。实际上,现实的应用不仅仅只需要具备远程通讯能力,通常的,还需要随需启动服务,把代理分布到客户端,分发异步事件,配置应用,发布补丁等等。Ice自带了一些服务,这些服务具备了上面所说的特征和一些其它的特征。这些服务实现以服务器的形式实现并向你的应用提供服务。他们分别是:1、IcePackIcePack是Ice的定位服务。当使用间接绑定时,用来将符号化的适配器名称转换为协议-地址对。除了定位服务之外,IcePack还提供了如下的服务:•IcePack允许你注册一个自动启动的服务:即当客户端进行请求时,服务器不需要处于运行状态,只要第一个客户端进行请求时,服务会自动启动。•IcePack支持脚本描述部署,可以轻易的配置包含了若干个服务的复杂的应用•IcePack提供了简单的对象查找服务,允许客户端获取他们感兴趣的对象代理。2、IceBoxIceBox是一个简单的应用服务器,它可以协调多个应用组件启动和停止。应用组件可以用动态链接库的形式发布而不是一个进程。这就减轻了系统的负载。例如,你可以在一个JVM中运行若干个应用组件而不是有多个进程,每一个进程都有自己的JVM。3、IceStormIceStorm是一个发布-订阅服务,它减除了客户端和服务器的耦合度。本质上说,IceStorm作为一个事件分发的交换机运行。发布者将事件发给服务,IceStorm按照顺序将事件传递给订阅者。使用这种方法,一个事件发布者就可以把一个事件发布给多个订阅者。事件按照主题分类,订阅者可以指定他们感兴趣的主题。只有订阅者感兴趣的主题才会发送给订阅者。服务允许指定服务的质量,从而允许应用在可伸缩性和性能之间进行适当的折中。如果你需要将信息发布到大量的应用组建,那么IceStorm是一个不错的选择。(一个很典型的例子就是股票报价的应用)。IceStorm减除了信息的发布者和订阅者之间的耦合,同时也能重新发布已经发布的信息。另外,IceStorm可以作为联合服务运行,即多个服务的实例可以运行在不同的机器上,从而降低了CPU的负载。4、

1 / 29
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功