跨平台跨语言的分布式开发框架ICE

ICE是ZEROC的开源通信协议产品,是一个面向对象的中间件,提供跨平台、跨语言的分布式应用解决方案。ICE通过代理实现客户端与服务端的通信,支持TCP、UDP和SSL协议,提供多种调用模式如Oneway、Twoway等,以适应不同业务需求。ICE还具有高效率、同步异步调用、多接口支持以及位置透明性等优点。
摘要由CSDN通过智能技术生成

ICE简介:

ICE(The Internet Communications Engine:互联网通信引擎)是ZEROC的开源通信协议产品,是一个面向对象的中间件,使我们能够以最小的代价构建分布式应用程序。

ICE跨平台、跨语言,这使我们可以更专注于业务逻辑的开发,它来处理所有底层的网络接口编程,这样我们就不用去考虑这样的细节:打开网络连接、网络数据传输的序列化与反序列化、连接失败的尝试次数等。

ICE和WEB SERVICE都是分布式应用的解决方案,但WEB SERVICE最要命的缺点就是他的性能问题,对于要求比较高的行业是很少会考虑WEB SERVICE的。

个人觉得ICE在理论上可以替代JNI(将Server和Client端都部署到本地,通过本地网络连接)。

ICE的工作方式:

Ice 是一种面向对象的中间件平台,这意味着 Ice为构建面向对象的客户-服务器应用提供了工具、API 和库支持。要与Ice持有的对象进行通信,客户端必须持有这个对象的代理(与CORBA的引用是相同的意思),这里的代理指的是这个对象的实例,ICE在运行时会定位到这个对象,然后寻找或激活它,再把In参数传给远程对象,再通过Out参数获取返回结果。

这里提到的代理又分为直接代理和间接代理,直接代理其内部保存有某个对象的标识,以及它的服务器的运行地址;间接代理指的是其内部保存有某个对象的标识,以及对象适配器名(object adapter name),间接代理没有包含寻址信息,为了正确地定位服务器,客户端在运行时会使用代理内部的对象适配器名,将其传给某个定位器服务,比如IcePack服务,然后,定位器会把适配器名当作关键字,在含有服务器地址的表中进行查找,把当前的服务器地址返回给客户,客户端run time现在知道了怎样联系服务器,就会像平常一样分派 (dispatch)客户请求。

ICE可以保证在任何的网络环境或者操作系统下,成功的调用只有一次,它在运行时会尽力的定位到远程服务器,在连接失败的情况下会做尝试性重复性连接,确实连不上的情况会给用户以提示。

客户端在调用服务端的方法时,可以采取同步或异步的方式实现,同步调用就相当于调用自己本地的方法一样,其它行为会被阻塞;异步调用是非常

第 1 章引言 1 1.1 引言 1 1.2 Internet Communications Engine (Ice) 3 1.3 本书的篇章结 4 1.4 排字约定 4 1.5 源码示例 5 1.6 联系作者 5 1.7 Ice 支持 5 第 Ice 综述 7 第 2 章 Ice 综述 9 2.1 本章综 9 2.2 Ice 架构 9 2.3 Ice 服务 21 2.4 Ice 在架构上提供的好处 23 2.5 与 CORBA 的对比 25 第 3 章 Hello World 应用 33 3.1 本章综 33 3.2 编写 Slice 定义 33 3.3 编写使用 C++ 的 Ice应用 34 3.4 编写使用 Java的 Ice 应用 41 3.5 总结 48 第 Ice 核心概念 51 第 4 章 Slice 语言 53 4.1 本章综 53 4.2 引言 53 4.3 编译 54 4.4 源文件 57 4.5 词法规则 59 4.6 基本的 Slice 类型 62 4.7 用户定义的类型 63 4.8 接口、操作,以及异常 70 4.9 类 92 4.10 提前声明 106 4.11 模块 107 4.12 类型 ID 109 4.13 Object 上的操作 110 4.14 本地类 111 4.15 Ice 模块 112 4.16 名字与作用域 113 4.17 元数据 117 4.18 使用 Slice 编译器 118 4.19 Slice 与 CORBA IDL 的对比 119 4.20 总结 127 第 5 章 一个简单文件系统的 Slice 定义 137 5.1 本章综 137 5.2 文件系统应用 137 5.3 文件系统的 Slice 定义 138 5.4 完整的定义 140 第 6 章 客户端的 Slice-to-C++ 映射 143 6.1 本章综 143 6.2 引言 143 6.3 标识符的映射 144 6.4 模块的映射 144 6.5 Ice 名字空间 145 6.6 简单内建类型的映射 146 6.7 用户定义类型的映射 146 6.8 常量的映射 150 6.9 异常的映射 151 6.10 运行时异常的映射 154 6.11 接口的映射 154 6.12 操作的映射 161 6.13 异常处理 167 6.14 类的映射 169 6.15 slice2cpp 命令行选项 183 6.16 与 CORBA C++映射比较 184 第 7 章开发 C++ 文件系统客户 189 7.1 本章综 189 7.2 C++ 客户 189 7.3 总结 194 第 8 章 客户端的 Slice-to-Java 映射 197 8.1 本章综 197 8.2 引言 197 8.3 标识符的映射 198 8.4 模块的映射 198 8.5 Ice Package 199 8.6 简单内建类型的映射 200 8.7 用户定义类型的映射 200 8.8 常量的映射 204 8.9 异常的映射 205 8.10 运行时异常的映射 206 8.11 接口的映射 207 8.12 操作的映射 213 8.13 异常处理 219 8.14 类的映射 220 8.15 Package 224 8.16 slice2java 命令行选项 225 第 9 章开发 Java 文件系统客户 229 9.1 本章综 229 9.2 Java 客户 229 9.3 总结 233 第 10 章 服务器端的 Slice-to-C++ 映射 235 10.1 本章综 235 10.2 引言 235 10.3 服务器端 main函数 236 10.4 接口的映射 247 10.5 参数传递 249 10.6 引发异常 251 10.7 对象体现 252 10.8 总结 257 第 11 章开发 C++ 文件系统服务器 261 11.1 本章综 261 11.2 实现文件系统服务器 261 11.3 总结 276 第 12 章 服务器端的 Slice-to-Java 映射 279 12.1 Chapter Overview 279 12.2 引言 279 12.3 服务器端 main函数 280 12.4 接口的映射 285 12.5 参数传递 287 12.6 引发异常 288 12.7 Tie 类 289 12.8 对象体现 292 12.9 总结 296 第 13 章开发 Java 文件系统服务器 297 13.1 本章综 297 13.2 实现文件系统服务器 297 13.3 总结 306 第 14 章 Ice 属性与配置 307 14.1 本章综 307 14.2 属性 307 14.3 配置文件 309 14.4 在命令行
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值