2019ICE系列培训(一).ppt

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

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

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

资源描述

ICE系列培训(一)钟潘zhongpan@fiberhome.com统一网管平台专项培训内容1.Ice概述2.Slice语言1.Ice概述1.1Ice简介1.2Ice术语1.3Ice架构1.4示例1.1Ice简介(1)Ice是什么首先,Ice(InternetCommunicationsEngine)是一个面向对象的中间件平台。基本上,这是指Ice提供一系列工具、APIs和库,支持构建面向对象的C/S结构应用程序。其次,Ice应用程序可运行于异构环境:客户端和服务端可使用不同编程语言编写,可以运行在不同操作系统和机器架构上,可以使用多种多样的网络通信技术。同时,这些应用程序的源代码是可移植的而不管部署环境是什么。1.1Ice简介(2)Ice支持哪些环境支持语言:客户端和服务端:C++、Java、C#、Python、Objective-C;客户端:PHP、Ruby支持网络协议:TCP、UDP、SSL支持操作系统及编译器:完整列表见简介(2)Ice支持哪些环境IceforC++Solaris10(SPARC)SunGCC4.3.2,32/64bitSolaris10(Intel)SunGCC3.4.3,32/64bitRedHatEnterpriseLinux5.4(i386andx86_64)GCC4.1.2SuSELinuxEnterpriseServer11(i586andx86_64)GCC4.3.2WindowsServer2008R2(x86andx64)VisualStudio2008SP1VisualC++2008SP1ExpressEdition(x86only)IceforJavaAllsupportedplatformsJDK1.5.0or1.6.0(Windows平台不支持IPV6,=6230761)1.1Ice简介(3)Ice包含哪些内容IceCore:远程通信的运行时支持IceUtil:实用工具库,包含智能指针、线程、Unicode处理等Slice及编译器:定义服务器和客户端交互的契约,并生成语言相关代码IceServicesFreeze&FreezeScript:对象持久化IceGrid(Ice3.0前叫IcePack):分布式计算IceBox:服务宿主IceStorm:消息发布订阅IceSSL:SSL支持Glacier2:软件防火墙IcePatch2:软件补丁1.1Ice简介(4)Ice和同类技术比较Ice是和DCOM/COM+、CORBA、WebService同属一类的技术。但是DCOM/COM+只能用于Windows平台,CORBA作为一种规范已经包含过多无用的复杂而变得华而不实、难以使用,WebSerivce以XML-RPC/SOAP为基础导致其效率和安全性是一大软肋,相比之下,Ice更加开放、简洁、高效和安全。参考资料(注意以下内容所用Ice版本比较老):《反叛之冰:InternetCommunicationsEngine》:《Ice与CORBA的差异》:《Ice和CORBA的性能比较》:简介(5)Ice实现目标提供一个适于异构环境使用的面向对象的中间件平台提供一整套的特性,支持广泛领域下现实分布式应用的开发避免不必要的复杂性,使平台易于学习和使用提供一个在网络带宽、内存使用、CPU负载上高效的实现提供一个具有内建安全性,使其适用于不安全的公众网络的实现1.2Ice术语(1)ClientandServerClient和Server是相对的概念,指请求过程中应用程序所充当的角色,Client指请求的发起方,而Server指请求的响应方,因此常常Client和Server的角色是可以互换的,例如有时需要Server回调客户端的方法,此时Server就是充当的Client角色。1.2Ice术语(2)InterfaceInterface是客户端和服务端交互的契约,中立于具体实现语言,采用Slice语言定义。Interface包含0或多个Operation,每个Operation有0或多个参数和一个返回值,参数具有方向性:输入参数由客户端初始化然后传给服务端,而输出参数由服务端初始化然后传给客户端。客户端通过调用Operation发出请求。1.2Ice术语(3)IceObjectIceObject是一种概念上或抽象上的实体,具有如下特征:一个IceObject是本地或远程地址空间中的实体,能响应客户端请求;一个单一的IceObject可以在一个服务器或多个服务器(冗余的)实例化,如果一个Iceobject同时有多个实例,仍然是一个单一IceObject;每个IceObject有一个或多个Interface,其中必须有一个为maininterface,其他的称为facet,客户端在调用时可以决定使用哪个Interface;每个Iceobject有一个唯一的objectidentity,这个标识符最低要求是在一个adapter内是唯一的,但是为了架构上的好处(34),推荐使用全局唯一标识符,如UUID。1.2Ice术语(4)Endpoint表明服务端所使用的协议、地址、端口等,例如default-h10.78.100.100-p10000-t1000,表示协议为default,default的值可通过Ice.Default.Protocol设置,默认为tcp,协议还可以为tcp、udp、ssl;-h10.78.100.100表示地址;-p10000表示端口;-t1000表示超时时间为1秒。多个endpoint用“:”分隔。完整语法见E.2p1963。1.2Ice术语(5)ObjectAdapter一个Adapter包含一个或多个endpoint,每个endpoint可使用不同的协议、地址、端口;一个Adapter包含一个或多个IceObject的具体化servant。客户端可以通过这些endpoint访问这些servant,Adapter负责将客户请求分派到servant中的应用代码以及协助servant的生命周期管理。1.2Ice术语(6)ServantServant是IceObject在服务端的具体化,使用具体语言(如C++)实现Interface,然后new一个对象,这样一个Servant就创建了,但是要使Servant成为IceObject的具体化,这还不够,还需要将Servant加入adapter,并为其具体化的IceObject起一个标识名,最后激活adapter,这时IceObject才存在了。一个Servant可以一次具体化一个或多个IceObject,例如new一个Servant后,可以以不同的名字加入同一个或不同adapter,这时一个Servant就是同时具体化多个IceObject,客户端在请求过程中可以决定具体化哪一个IceObject。相反的,一个IceObject可以有多个Servant,例如在不同地址空间或不同机器上创建不同Servant具体化同一个IceObject,这样就构成一个冗余系统,提高系统可靠性。1.2Ice术语(7)Proxy和Servant相对,Proxy是IceObject在客户端的具体化。Proxy扮演着IceObject的本地代表,客户端要和IceObject联系,必须持有一个IceObject的Proxy。当客户端调用Proxy的一个Operation时,Ice运行时会:定位IceObject;激活IceObject所在的Server如果它没有运行;激活IceObject;传输任何输入参数到IceObject;等待Operation完成;返回任何输出参数和返回值给客户端(或抛出异常)。1.2Ice术语(8)StringifiedProxyProxy中的信息可以表达为一个字符串,例如:SimplePrinter:default-p10000,其中SimplePrinter为对象标识;default–p10000为endpoint,表示使用默认tcp协议,端口10000(完整语法见E.1p1961)。Ice运行时提供API在Proxy和字符串表达之间进行转换。字符串化的好处是可以将Proxy存储在数据库或文本文件。1.2Ice术语(9)DirectProxy直接Proxy是指Proxy中包含的endpoint就是要访问的服务器地址。(10)IndirectProxy间接Proxy不包含endpoint,有两种形式:一种只有对象标识,一种包含对象标识和objectadapter标识。类似DNS,要确定正确的server,客户端需要将Proxy传给locationservice(32.17),后者查找合适的server地址并返回给客户端。1.2Ice术语(11)DirectVs.IndirectBinding将Proxy解析为协议-地址对的过程称为绑定,directbinding用于directproxy,indirectbinding用于indirectproxy。Indirectbinding的主要好处是允许我们移动服务器而不会使客户端持有的Proxy变为无效。(12)FixedProxyFixedProxy和特定连接关联,包含一个连接句柄,一旦连接关闭,Proxy不再工作。FixedProxy不能整编,也就是不能作为参数传递给方法调用。FixedProxy用于实现双向连接,允许服务端回掉客户端而不开启新的连接(36.7)。1.2Ice术语(13)RoutedProxyRoutedProxy将所有请求转发到特定目标对象。它用于实现类似于Glacier2这样的服务,允许客户端和位于防火墙后的服务通信(42)。(14)Replication在Ice中,Replication包括使objectadapter在多个地址上可用。Replication的目标通常是通过在多台计算机上运行同一个服务来提供冗余性。如果一台计算机失效了,其他还可用。1.2Ice术语要使用replication意味着应用程序必须为此而专门设计。这表示,当客户端能通过一个地址访问一个对象时,从其他地址也能获得相同结果。Ice支持一种有限形式的replication,通过在Proxy中指定多个地址,Ice运行时初始连接时随机选择一个地址,如果失败则会尝试其他地址,例如:SimplePrinter:tcp-hserver1–p10001:tcp-hserver2-p100021.2Ice术语(15)ReplicaGroups除了基于Proxy的Replication,Ice还支持一种称为ReplicaGroups的更有用的Replication形式,这种形式需要使用locationservice。ReplicaGroups有一个唯一的标识,一旦一个ReplicaGroups建立后,可以通过indirectproxy的第二种形式(adapter标识替换为ReplicaGroups标识)进行访问。ReplicaGroups的好处是引入间接性,通过作为中间人的locationservice添加更多智能绑定过程。1.2Ice术语(16)At-Most-OnceSemanticsIce保证At-Most-OnceSemantics语义,即请求要么发送出去,如果不能发送,会以合适的异常通知客户端。任何情况都不会出现请求被发送两次,重试的尝试只会出现在确切的知道发送失败时(UDP例外)。虽然无At-Most

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

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

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

×
保存成功