SlideShare une entreprise Scribd logo
1  sur  13
ICE (The Internet Communications Engine)分布式应用中间件平台客户端业务部:陈栋2010年12月08日
前言 来源和定义           ICE是由一些前CORBA阵营中的领军人物创建的ZeroC公司推出的旗舰产品。ICE开放源码遵循GPL协议,目前已经有包括Lockheed Martin , Skype , Hewlett-Packard , Naval Undersea Warfare Center以及国内的 CCTVnet,Tencent 等等非常多的公司和机构采用其产品,并基于该产品构建自己的分布式应用系统。 那么,ICE是个什么东西呢?我们能用它做什么呢?          ICE的定义:Ice是一个支持多语言映射的,面向对象的用于构建分布式应用系统的中间件平台。          ICE目前支持到C++, Java, .NET, Python, PHP, Ruby, and Objective-C等多种语言的映射。同时他的分支Ice-E支持使用网络的智能手机,PDA甚至是嵌入式控制器等网络设备. 目前ICE的最新版本是3.4.1,因为目前我们仍然在使用3.3.1,所以之后的内容都会基于3.3.1版本。
简介 ICE的特点       ICE相比较其他分布式中间件来讲,具有如下优点: 提供适用于异种环境的面向对象中间件平台.  提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现. 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。 避免不必要的复杂性,使平台更易于学习和使用。 当然,ICE也有其自身的缺点: 需要使用slice语言进行接口和对象设计. 编译前确认,静态的接口。 接口或对象更新需要重新生成映射并 分发,部署更新.
功能 ICE提供的功能           ICE提供了足够全面和完善的功能特性,使其能应用在各种实际的生产环境中. ICE包含的主要功能如下: IceRunTime内建提供的多线程处理。 直接代理对象,组对象和动态代理对象(需要LocationService),组对象。 异步接口回调和基于流的动态分发(支持防火墙穿透)。 基于TCP/IP的高性能单路,批量单路调用   和   基于UDP的数据包,批量数据包调用。 此外,ICE还提供了多种服务,包括: Glacier2服务(Ice的防火墙解决方案,双向链接通讯,数据采用SSL加密) IceFreeze服务(默认基于Berkeley DB的对象持久化服务) IceStorm服务(Ice的消息服务,支持作为federated服务运行) IcePatch服务(Ice的补丁更新服务,一般采用Glacier2来保证不被非法下载)  IceGrid服务(网格计算服务,包含了动态部署,自动更新,按需启动,负载均衡,状态监测和自我恢复)是旧版本中IcePack的增强版,整合了其他服务。
用途 ICE的用途 尽管ICE提供了极为全面和完善的功能,使其能应用在各种实际的生产环境中. 但我个人认为其在如下场景中能最大化发挥其优点: 整合业务线中的通用服务或核心服务(如用户积分系统)。 流量极高的小数据消息服务(如统一的远程日志统计系统)。 性能要求苛刻的对外系统服务(如提供给第三方的API接口)。
简单实例 ICE实例           我们现在以一个简单JAVA版本的Hello World远程打印程序为例子,简单说明一下ICE的实现。首先,如前所述,ICE使用一种称之为Slice的描述语言来定义接口和对象,那我们首先来使用Slice定义一个远程接口,如下所示:       module src{           module slices{                  interface Printer{  void remotePrint (string s);  };          };       };  我们把这段文本保存在叫作printer.ice 的文件中。然后利用ice提供的Slice2Java映射工具生成各种远程代理和对象。 在cmd方式下,执行slice2java  printer.ice命令,即可得到所有相关的类和接口。
简单样例 ICE实例 示例中我们定义了一个接口Printer,包含一个remotePrint方法,然后我们分别编写服务器端和客户端的代码。注意该接口位于模块src/slice目录下,对于JAVA就是package,对于C++就是namespace。 在服务器端中,我们仅仅只是需要实现扩展该接口的Disp抽象类,并具体实现该远程接口的唯一方法即可。 在服务器端中的SliceServer类虽然看起来比较复杂,但是实际上我们只需要编写完整之后,每次都可以直接拿来作为新的服务器端启动类来使用。而不需要每次都进行编写。同理,客户端中的SliceClient类也是实际上可以之后进行复用,而无需每次都重新编写的。 本例中,我们仅仅定义了一个接口,其实可以扩展成定义多个接口,多个接口之间也是完全可以存在扩展和继承关系。本例中我们唯一的接口仅仅包含一个remotePrint方法,自然也可以定义多个方法。并且每个方法都可以有返回值,而且返回值既可以是基本数据类型,也可以是自定义数据类型。
SLICE语法 SLICE语法简介     如前所述,ICE为了保证语言无关性,客户和服务器使用Slice 来定义并建立两者之间的接口合约。     Slice (Specification Language for Ice) Slice 在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关。 Slice编译器定义了编译到特定的实现语言 。编译器把与语言无关的接口和对象定义翻译成针对特定语言的类型定义和API。之前的样例就是一个SLICE接口合约,下边我们简单介绍一下SLICE语言。 所有的Slice定义文件扩展名必须是.ice ,否则slice编译器不接受。 可以使用C或者C++风格的注释。 包含class,dictionary,ice等关键字,同时保留Helper,Holder等等保留的标识符。详见相关的文档。 基本的数据类型有bool,byte(8位),short(16位),int(32位),long(64位),float(IEEE 单精度),double(IEEE 双精度),string(没有null的概念,因为其难以映射到部分语言中)。
SLICE语法 SLICE语法简介 枚举(enumerations)、结构(structures)、序列(sequences)以及词典(dictionaries)。枚举例子:  enum Fruit { Apple, Pear, Orange }; 映射到Java为枚举。结构会映射为一个具体的Javabean。举例子如下:structTimeOfDay {  string second; };     序列默认都是为数组,例如: sequence<Fruit> FruitPlatter; 词典映射为Map类型。例如: dictionary<int,string> smap; 可以定义基本数据类型的常量,使用const关键字即可。例如: const boolAppendByDefault = true; const string Advice = "Don't Panic!"; 接口定义。Slice的接口可以理解成Java的接口。接口中的方法即对应了Java接口中的抽象方法。例如我们例子中的remotePrint方法就是一个没有返回值的抽象方法,需求我们之后去继承并实现。注意的是接口可以被继承。
SLICE语法 SLICE语法简介 此外slice还支持用户自定义异常,其结构为exception  customexception{ string message,string code};当然,一个异常也可以没有任何信息数据。同时类似Java,一个接口的操作可以申明为抛出多个自定义异常。 Slice还可以定义class类,类像是接口:它们都能有操作;类也像是结构:它们都能有数据成员。 Slice 的类定义与结构定义类似,但所用关键字是class。例如:     class TimeOfDay     {   short hour; // 0 - 23         short minute; // 0 - 59         short second; // 0 - 59     };但是同结构不同的是,类也可以被单继承,能使用Slice 结构的地方,你都能使用Slice 类。但根据官方文档的描述,一般而言结构相对于类,定义和实现更清晰,性能也更好。
SLICE语法 SLICE语法简介 最后,Slice还支持元数据。元数据指的是某一个具体语言映射的特殊类型或者特定标记。例如: ["java:type:java.util.LinkedList"] sequence <string> seqs;[[“java:package:com.kaiqi.slice”]] 对于第一个,当其作为到Java的映射时候,该sequence 就不会被转换为通常的数组,而是作为Java的List类型被映射。而如果作为到C或者C++的映射,仍然会被作为数组。第二个是一个比较特殊的元数据,成为全局元数据,映射为我们JAVA经常使用的包名前缀,同样,只有在作为Java映射的时候才有效,对其他语言来说,编译器会自动忽略。
总结 结束语          ICE为我们提供了一个高性能分布式应用开发的框架,基于其提供的各种功能,使得我们可以专注于业务逻辑,而不用关心系统底层的通信和交互细节。面对市面上林林总总的中间件,我们又多了一个值得信赖的选择。         由于时间有限,我们只能就ICE的基本功能做一个简单的介绍,以便让大家对其有一个全面系统的了解,在我们知道其用途之后,就可以在之后进行系统设计的时候多一份选择。关于ICE更详细的内容,以后有机会的话再同大家一起分享! 谢谢大家!         ICE的官网为:http://www.zeroc.com/

Contenu connexe

Similaire à 分布式应用程序设计利器-ice

腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程
areyouok
 
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
ASUSCloud
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
easychen
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
Ben Huang
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
Liyao Chen
 
美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010
Jiang Zhu
 
Elaster cap 云应用开发平台介绍
Elaster cap 云应用开发平台介绍Elaster cap 云应用开发平台介绍
Elaster cap 云应用开发平台介绍
tcloudcomputing
 

Similaire à 分布式应用程序设计利器-ice (20)

容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中容器驅動開發 - .NET Conf 2017 @ 台中
容器驅動開發 - .NET Conf 2017 @ 台中
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程
 
腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程腾讯大讲堂24 qq show2.0重构历程
腾讯大讲堂24 qq show2.0重构历程
 
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
0527 asus cloud day 開放。引領數位內容進軍國際 – 華碩雲端市集
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
雲端技術的新趨勢
雲端技術的新趨勢雲端技術的新趨勢
雲端技術的新趨勢
 
Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享Windows 8 apps dev.整理及分享
Windows 8 apps dev.整理及分享
 
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileCeph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
 
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China MobileCeph Day Beijing - Leverage Ceph for SDS in China Mobile
Ceph Day Beijing - Leverage Ceph for SDS in China Mobile
 
Tech.days Taiwan AZR302
Tech.days Taiwan AZR302Tech.days Taiwan AZR302
Tech.days Taiwan AZR302
 
打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsight打開窗,讓大象跨進來 - Microsoft HDInsight
打開窗,讓大象跨進來 - Microsoft HDInsight
 
Bluemix Node-Red Part II
Bluemix Node-Red Part IIBluemix Node-Red Part II
Bluemix Node-Red Part II
 
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
 
美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010美国云计算发展现状及趋势-2010
美国云计算发展现状及趋势-2010
 
Elaster cap 云应用开发平台介绍
Elaster cap 云应用开发平台介绍Elaster cap 云应用开发平台介绍
Elaster cap 云应用开发平台介绍
 
Android应用开发 - 沈大海
Android应用开发 - 沈大海Android应用开发 - 沈大海
Android应用开发 - 沈大海
 
Micro service
Micro serviceMicro service
Micro service
 
Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3Ibm dnt-dcos-v9-3
Ibm dnt-dcos-v9-3
 
教學投影片01_Vb2005
教學投影片01_Vb2005教學投影片01_Vb2005
教學投影片01_Vb2005
 
Cloud client : 达尔文信息云浏览器
Cloud client : 达尔文信息云浏览器Cloud client : 达尔文信息云浏览器
Cloud client : 达尔文信息云浏览器
 

Plus de Tony Deng

《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
Tony Deng
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
Tony Deng
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
Tony Deng
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
Tony Deng
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
Tony Deng
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
Tony Deng
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践
Tony Deng
 

Plus de Tony Deng (20)

一页纸项目管理
一页纸项目管理一页纸项目管理
一页纸项目管理
 
Docker at the gate
Docker at the gateDocker at the gate
Docker at the gate
 
《我们如何工作》—质量保障
《我们如何工作》—质量保障《我们如何工作》—质量保障
《我们如何工作》—质量保障
 
《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通《我们如何工作》- 产品经理和工程师如何有效沟通
《我们如何工作》- 产品经理和工程师如何有效沟通
 
我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式我们为何工作--找到正确的工作方式
我们为何工作--找到正确的工作方式
 
SDN介绍
SDN介绍SDN介绍
SDN介绍
 
漫谈职业规划
漫谈职业规划漫谈职业规划
漫谈职业规划
 
一次Http请求过程分析
一次Http请求过程分析一次Http请求过程分析
一次Http请求过程分析
 
图解Git
图解Git图解Git
图解Git
 
一次Code review引发的思考
一次Code review引发的思考一次Code review引发的思考
一次Code review引发的思考
 
My sql迁移总结
My sql迁移总结My sql迁移总结
My sql迁移总结
 
一次项目的探险旅程
一次项目的探险旅程一次项目的探险旅程
一次项目的探险旅程
 
Scrum敏捷开发模型
Scrum敏捷开发模型Scrum敏捷开发模型
Scrum敏捷开发模型
 
Shoutv 冯晓东
Shoutv 冯晓东Shoutv 冯晓东
Shoutv 冯晓东
 
技术债务的形成
技术债务的形成技术债务的形成
技术债务的形成
 
我们不了解的计算机世界(二)
我们不了解的计算机世界(二)我们不了解的计算机世界(二)
我们不了解的计算机世界(二)
 
HBase
HBaseHBase
HBase
 
我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历我们不了解的计算机世界(一)--Unix目录结构的来历
我们不了解的计算机世界(一)--Unix目录结构的来历
 
实时任务调度
实时任务调度实时任务调度
实时任务调度
 
节约内存:Instagram的redis实践
节约内存:Instagram的redis实践节约内存:Instagram的redis实践
节约内存:Instagram的redis实践
 

分布式应用程序设计利器-ice

  • 1. ICE (The Internet Communications Engine)分布式应用中间件平台客户端业务部:陈栋2010年12月08日
  • 2. 前言 来源和定义 ICE是由一些前CORBA阵营中的领军人物创建的ZeroC公司推出的旗舰产品。ICE开放源码遵循GPL协议,目前已经有包括Lockheed Martin , Skype , Hewlett-Packard , Naval Undersea Warfare Center以及国内的 CCTVnet,Tencent 等等非常多的公司和机构采用其产品,并基于该产品构建自己的分布式应用系统。 那么,ICE是个什么东西呢?我们能用它做什么呢? ICE的定义:Ice是一个支持多语言映射的,面向对象的用于构建分布式应用系统的中间件平台。 ICE目前支持到C++, Java, .NET, Python, PHP, Ruby, and Objective-C等多种语言的映射。同时他的分支Ice-E支持使用网络的智能手机,PDA甚至是嵌入式控制器等网络设备. 目前ICE的最新版本是3.4.1,因为目前我们仍然在使用3.3.1,所以之后的内容都会基于3.3.1版本。
  • 3. 简介 ICE的特点 ICE相比较其他分布式中间件来讲,具有如下优点: 提供适用于异种环境的面向对象中间件平台. 提供一种在网络带宽、内存使用和CPU 开销方面都很高效的实现. 提供一组完整的特性,支持广泛的领域中的实际的分布式应用的开发。 避免不必要的复杂性,使平台更易于学习和使用。 当然,ICE也有其自身的缺点: 需要使用slice语言进行接口和对象设计. 编译前确认,静态的接口。 接口或对象更新需要重新生成映射并 分发,部署更新.
  • 4. 功能 ICE提供的功能 ICE提供了足够全面和完善的功能特性,使其能应用在各种实际的生产环境中. ICE包含的主要功能如下: IceRunTime内建提供的多线程处理。 直接代理对象,组对象和动态代理对象(需要LocationService),组对象。 异步接口回调和基于流的动态分发(支持防火墙穿透)。 基于TCP/IP的高性能单路,批量单路调用 和 基于UDP的数据包,批量数据包调用。 此外,ICE还提供了多种服务,包括: Glacier2服务(Ice的防火墙解决方案,双向链接通讯,数据采用SSL加密) IceFreeze服务(默认基于Berkeley DB的对象持久化服务) IceStorm服务(Ice的消息服务,支持作为federated服务运行) IcePatch服务(Ice的补丁更新服务,一般采用Glacier2来保证不被非法下载) IceGrid服务(网格计算服务,包含了动态部署,自动更新,按需启动,负载均衡,状态监测和自我恢复)是旧版本中IcePack的增强版,整合了其他服务。
  • 5. 用途 ICE的用途 尽管ICE提供了极为全面和完善的功能,使其能应用在各种实际的生产环境中. 但我个人认为其在如下场景中能最大化发挥其优点: 整合业务线中的通用服务或核心服务(如用户积分系统)。 流量极高的小数据消息服务(如统一的远程日志统计系统)。 性能要求苛刻的对外系统服务(如提供给第三方的API接口)。
  • 6.
  • 7. 简单实例 ICE实例 我们现在以一个简单JAVA版本的Hello World远程打印程序为例子,简单说明一下ICE的实现。首先,如前所述,ICE使用一种称之为Slice的描述语言来定义接口和对象,那我们首先来使用Slice定义一个远程接口,如下所示: module src{ module slices{ interface Printer{ void remotePrint (string s); }; }; }; 我们把这段文本保存在叫作printer.ice 的文件中。然后利用ice提供的Slice2Java映射工具生成各种远程代理和对象。 在cmd方式下,执行slice2java printer.ice命令,即可得到所有相关的类和接口。
  • 8. 简单样例 ICE实例 示例中我们定义了一个接口Printer,包含一个remotePrint方法,然后我们分别编写服务器端和客户端的代码。注意该接口位于模块src/slice目录下,对于JAVA就是package,对于C++就是namespace。 在服务器端中,我们仅仅只是需要实现扩展该接口的Disp抽象类,并具体实现该远程接口的唯一方法即可。 在服务器端中的SliceServer类虽然看起来比较复杂,但是实际上我们只需要编写完整之后,每次都可以直接拿来作为新的服务器端启动类来使用。而不需要每次都进行编写。同理,客户端中的SliceClient类也是实际上可以之后进行复用,而无需每次都重新编写的。 本例中,我们仅仅定义了一个接口,其实可以扩展成定义多个接口,多个接口之间也是完全可以存在扩展和继承关系。本例中我们唯一的接口仅仅包含一个remotePrint方法,自然也可以定义多个方法。并且每个方法都可以有返回值,而且返回值既可以是基本数据类型,也可以是自定义数据类型。
  • 9. SLICE语法 SLICE语法简介 如前所述,ICE为了保证语言无关性,客户和服务器使用Slice 来定义并建立两者之间的接口合约。 Slice (Specification Language for Ice) Slice 在客户与服务器之间建立合约,描述应用所使用的各种类型及对象接口。这种描述与实现语言无关。 Slice编译器定义了编译到特定的实现语言 。编译器把与语言无关的接口和对象定义翻译成针对特定语言的类型定义和API。之前的样例就是一个SLICE接口合约,下边我们简单介绍一下SLICE语言。 所有的Slice定义文件扩展名必须是.ice ,否则slice编译器不接受。 可以使用C或者C++风格的注释。 包含class,dictionary,ice等关键字,同时保留Helper,Holder等等保留的标识符。详见相关的文档。 基本的数据类型有bool,byte(8位),short(16位),int(32位),long(64位),float(IEEE 单精度),double(IEEE 双精度),string(没有null的概念,因为其难以映射到部分语言中)。
  • 10. SLICE语法 SLICE语法简介 枚举(enumerations)、结构(structures)、序列(sequences)以及词典(dictionaries)。枚举例子: enum Fruit { Apple, Pear, Orange }; 映射到Java为枚举。结构会映射为一个具体的Javabean。举例子如下:structTimeOfDay { string second; }; 序列默认都是为数组,例如: sequence<Fruit> FruitPlatter; 词典映射为Map类型。例如: dictionary<int,string> smap; 可以定义基本数据类型的常量,使用const关键字即可。例如: const boolAppendByDefault = true; const string Advice = "Don't Panic!"; 接口定义。Slice的接口可以理解成Java的接口。接口中的方法即对应了Java接口中的抽象方法。例如我们例子中的remotePrint方法就是一个没有返回值的抽象方法,需求我们之后去继承并实现。注意的是接口可以被继承。
  • 11. SLICE语法 SLICE语法简介 此外slice还支持用户自定义异常,其结构为exception customexception{ string message,string code};当然,一个异常也可以没有任何信息数据。同时类似Java,一个接口的操作可以申明为抛出多个自定义异常。 Slice还可以定义class类,类像是接口:它们都能有操作;类也像是结构:它们都能有数据成员。 Slice 的类定义与结构定义类似,但所用关键字是class。例如: class TimeOfDay { short hour; // 0 - 23 short minute; // 0 - 59 short second; // 0 - 59 };但是同结构不同的是,类也可以被单继承,能使用Slice 结构的地方,你都能使用Slice 类。但根据官方文档的描述,一般而言结构相对于类,定义和实现更清晰,性能也更好。
  • 12. SLICE语法 SLICE语法简介 最后,Slice还支持元数据。元数据指的是某一个具体语言映射的特殊类型或者特定标记。例如: ["java:type:java.util.LinkedList"] sequence <string> seqs;[[“java:package:com.kaiqi.slice”]] 对于第一个,当其作为到Java的映射时候,该sequence 就不会被转换为通常的数组,而是作为Java的List类型被映射。而如果作为到C或者C++的映射,仍然会被作为数组。第二个是一个比较特殊的元数据,成为全局元数据,映射为我们JAVA经常使用的包名前缀,同样,只有在作为Java映射的时候才有效,对其他语言来说,编译器会自动忽略。
  • 13. 总结 结束语 ICE为我们提供了一个高性能分布式应用开发的框架,基于其提供的各种功能,使得我们可以专注于业务逻辑,而不用关心系统底层的通信和交互细节。面对市面上林林总总的中间件,我们又多了一个值得信赖的选择。 由于时间有限,我们只能就ICE的基本功能做一个简单的介绍,以便让大家对其有一个全面系统的了解,在我们知道其用途之后,就可以在之后进行系统设计的时候多一份选择。关于ICE更详细的内容,以后有机会的话再同大家一起分享! 谢谢大家! ICE的官网为:http://www.zeroc.com/