logo资料库

ICE入门文档.docx

第1页 / 共766页
第2页 / 共766页
第3页 / 共766页
第4页 / 共766页
第5页 / 共766页
第6页 / 共766页
第7页 / 共766页
第8页 / 共766页
资料共766页,剩余部分请下载后查看
Ice分布式程序设计
第1章引言
1.1节引言
1.2节Internet Communications Engine(Ice)
1.3节本书的篇章结构
1.4节排字约定
1.5节源码示例
1.6节联系作者
1.7节Ice支持
第一部分Ice综述
第2章Ice综述
2.1节本章综述
2.2节Ice架构
2.2.1引言
2.2.2术语
2.2.3Slice (Ice规范语言)
2.2.4语言映射
2.2.5客户与服务器的结构
2.2.6Ice协议
2.2.7对象持久
2.3节Ice服务
2.3.1IcePack
2.3.2IceBox
2.3.3IceStorm
2.3.4IcePatch
2.3.5Glacier
2.4节Ice在架构上提供的好处
2.5节与CORBA的对比
2.5.1对象模型的差异
2.5.2平台支持的差异
2.5.3复杂性上的差异
第3章Hello World应用
3.1节本章综述
3.2节编写Slice定义
3.3节编写使用C++的Ice应用
3.4节编写使用Java的Ice应用
3.5节总结
第二部分 Ice核心概念
第4章Slice语言
4.1节本章综述
4.2节引言
4.3节编译
4.3.1客户与服务器使用同一种开发环境
4.3.2客户和服务器使用不同的开发环境
4.4节源文件
4.4.1文件命名
4.4.2文件格式
4.4.3预处理
4.4.4定义次序
4.5节词法规则
4.5.1注释
4.5.2关键字
4.5.3标识符
4.6节基本的Slice类型
4.6.1整数类型
4.6.2浮点类型
4.6.3串
4.6.4布尔值
4.6.5字节
4.7节用户定义的类型
4.7.1枚举
4.7.2结构
4.7.3序列
4.7.4词典
4.7.5常量定义与直接量
4.8节接口、操作,以及异常
4.8.1参数与返回值
4.8.2用户异常
4.8.3异常继承
4.8.4运行时异常
4.8.5接口语义与代理
4.8.6接口继承
4.9节类
4.9.1简单类
4.9.2类继承
4.9.3类的继承语义
4.9.4类用作联合
4.9.5自引用的类
4.9.6类vs.结构
4.9.7有操作的类
4.9.8类在架构上的影响
4.9.9实现接口的类
4.9.10类继承的局限
4.9.11传值vs. 传引用
4.10节提前声明
4.11节模块
4.12节类型ID
4.13节Object上的操作
4.14节本地类型
4.15节Ice模块
4.16节名字与作用域
4.16.1名字作用域
4.16.2大小写敏感性
4.16.3嵌套作用域中的名字
4.16.4名字查找规则
4.17节元数据
4.18节使用Slice编译器
4.19节Slice与CORBA IDL的对比
4.19.1Slice有、而CORBA IDL没有的特性
4.19.2CORBA IDL有、而Slice没有的特性
4.20节总结
第5章一个简单文件系统的Slice定义
5.1节本章综述
5.2节文件系统应用
5.3节文件系统的Slice定义
5.4节完整的定义
第6章客户端的Slice-to-C++映射
6.1节本章综述
6.2节引言
6.3节标识符的映射
6.4节模块的映射
6.5节Ice 名字空间
6.6节简单内建类型的映射
6.7节用户定义类型的映射
6.7.1枚举的映射
6.7.2结构的映射
6.7.3序列的映射
6.7.4词典的映射
6.8节常量的映射
6.9节异常的映射
6.10节运行时异常的映射
6.11节接口的映射
6.11.1代理类和代理句柄
6.11.2代理句柄上的方法
6.11.3对象标识与代理比较
6.12节操作的映射
6.12.1普通的、 idempotent,以及nonmutating操作
6.12.2传递参数
6.13节异常处理
6.14节类的映射
6.14.1从Ice::Object 继承
6.14.2类的数据成员
6.14.3类的操作
6.14.4类工厂
6.14.5用于类的智能指针
6.15节slice2cpp 命令行选项
6.16节与CORBA C++映射比较
第7章开发C++文件系统客户
7.1节本章综述
7.2节C++客户
7.3节总结
第8章客户端的Slice-to-Java映射
8.1节本章综述
8.2节引言
8.3节标识符的映射
8.4节模块的映射
8.5节Ice Package
8.6节简单内建类型的映射
8.7节用户定义类型的映射
8.7.1枚举的映射
8.7.2结构的映射
8.7.3序列的映射
8.7.4词典的映射
8.8节常量的映射
8.9节异常的映射
8.10节运行时异常的映射
8.11节接口的映射
8.11.1代理接口
8.11.2Ice.ObjectPrx接口
8.11.3代理助手
8.12节操作的映射
8.12.1普通的、idempotent,以及nonmutating操作
8.12.2传递参数
8.13节异常处理
8.14节类的映射
8.14.1类工厂
8.15节Package
8.16节slice2java命令行选项
第9章开发Java文件系统客户
9.1节本章综述
9.2节Java客户
9.3节总结
第10章服务器端的Slice-to-C++映射
10.1节本章综述
10.2节引言
10.3节服务器端main 函数
10.3.1Ice::Application类
10.3.2Ice::Service类
10.4节接口的映射
10.4.1骨架类
10.4.2Servant类
10.5节参数传递
10.6节引发异常
10.7节对象体现
10.7.1实例化Servant
10.7.2创建标识
10.7.3激活 Servant
10.7.4用UUID做标识
10.7.5创建代理
10.8节总结
第11章开发C++文件系统服务器
11.1节本章综述
11.2节实现文件系统服务器
11.2.1服务器的main程序
11.2.2Servant类定义
11.2.3Servant 实现
11.3节总结
第12章服务器端的Slice-to-Java映射
12.1节Chapter Overview
12.2节引言
12.3节服务器端main 函数
12.3.1Ice.Application类
12.4节接口的映射
12.4.1骨架类
12.4.2Servant类
12.5节参数传递
12.6节引发异常
12.7节Tie类
12.8节对象体现
12.8.1Instantiating a Servant
12.8.2创建标识
12.8.3激活 Servant
12.8.4用UUID做标识
12.8.5创建代理
12.9节总结
第13章开发Java文件系统服务器
13.1节本章综述
13.2节实现文件系统服务器
13.2.1服务器的main程序
13.2.2FileI Servant类
13.2.3DirectoryI Servant类
13.3节总结
第14章Ice属性与配置
14.1节本章综述
14.2节属性
14.2.1属性范畴
14.2.2保留的前缀
14.2.3属性语法
14.2.4值语法
14.3节配置文件
14.4节在命令行上设置属性
14.5节Ice.Config属性
14.6节命令行解析与初始化
14.7节Ice.ProgramName属性
14.8节在程序中使用属性
14.8.1读取属性
14.8.2设置属性
14.8.3解析属性
14.8.4实用操作
14.8.5处理多个属性集
14.9节总结
第15章C++ 线程与并发
15.1节本章综述
15.2节引言
15.3节Ice 线程模型
15.4节线程库综述
15.5节互斥体
15.5.1文件系统应用的线程安全的文件访问
15.5.2保证互斥体的解锁
15.6节递归互斥体
15.7节读写递归互斥体
15.8节定时锁
15.9节监控器
15.9.1Monitor类
15.9.2使用监控器
15.9.3高效通知
15.9.4效率考虑事项
15.10节线程
15.10.1Thread类
15.10.2实现线程
15.10.3创建线程
15.10.4ThreadControl类
15.10.5一个小例子
15.10.6可移植的信号处理
15.11节总结
第三部分 高级Ice
第16章Ice Run Time 详解
16.1节引言
16.2节通信器
16.3节对象适配器
16.3.1活动 Servant映射表
16.3.2Servant
16.3.3对象适配器接口
16.3.4Servant 激活与解除激活
16.3.5适配器状态
16.4节对象标识
16.5节Ice::Current对象
16.6节Servant定位器
16.6.1综述
16.6.2Servant定位器接口
16.6.3针对Servant定位器的线程保证
16.6.4Servant定位器注册
16.6.5实现一个简单的Servant定位器
16.6.6使用对象标识的category成员
16.6.7使用Cookies
16.7节服务器实现技术
16.7.1渐进的初始化
16.7.2缺省 Servants
16.7.3混合途径及缓存
16.7.4Servant 逐出器
16.8节Ice::Context
16.8.1显式传递上下文
16.8.2隐式传递上下文
16.8.3取回隐式的上下文
16.8.4上下文用例
16.8.5警告
16.9节调用超时
16.10节单向调用
16.11节数据报调用
16.12节成批的调用
16.13节测试代理的分派类型
16.14节Ice::Logger接口
16.15节Ice::Stats
16.16节位置透明性
16.17节16.17 对比Ice与CORBA Run Time
16.18节总结
第17章异步程序设计
17.1节本章综述
17.2节引言
17.2.1异步方法调用
17.2.2异步方法分派
17.2.3用元数据控制代码生成
17.2.4透明性
17.3节使用AMI
17.3.1用单向调用模拟 AMI
17.3.2语言映射
17.3.3例子
17.3.4并发问题
17.4节使用AMD
17.4.1语言映射
17.4.2异常
17.4.3例子
17.5节总结
第18章Ice协议
18.1节本章综述
18.2节数据编码
18.2.1尺寸
18.2.2封装
18.2.3切片(Slice)
18.2.4基本类型
18.2.5串
18.2.6序列
18.2.7词典
18.2.8枚举符
18.2.9结构
18.2.10异常
18.2.11类
18.2.12代理
18.3节协议消息
18.3.1消息头
18.3.2请求消息体
18.3.3批请求消息体
18.3.4答复消息体
18.3.5验证连接消息
18.3.6关闭连接消息
18.3.7协议状态机
18.3.8不按次序关闭连接
18.4节压缩
18.5节协议和编码版本
18.5.1版本基本规则
18.5.2版本兼容规则
18.5.3版本磋商
18.6节与IIOP的对比
第19章Ice的PHP扩展
19.1节本章综述
19.2节引言
19.2.1能力
19.2.2局限
19.2.3设计
19.3节配置
19.3.1Profile
19.3.2缺省 Profile
19.3.3有名字的Profile
19.3.4Profile 函数
19.3.5Slice语义
19.4节客户端的Slice-to-PHP映射
19.4.1标识符的映射
19.4.2简单的内建类型的映射
19.4.3用户定义的类型的映射
19.4.4常量的映射
19.4.5异常的映射
19.4.6运行时异常的映射
19.4.7接口的映射
19.4.8类的映射
19.4.9操作的映射
19.4.10代理的映射
19.4.11Ice::Communicator的映射
第四部分 Ice服务
第20章IcePack
20.1节本章综述
20.2节介绍
20.3节概念
20.3.1位置透明性
20.3.2绑定
20.3.3部署
20.4节Ice定位器设施
20.4.1对象与对象适配器
20.4.2设计考虑事项
20.4.3在客户中使用Ice定位器设施
20.4.4在服务器中使用Ice定位器设施
20.4.5部署
20.4.6依赖
20.4.7间接绑定的开销
20.5节IcePack 注册表
20.5.1端点
20.5.2安全考虑事项
20.5.3注册表对象标识
20.5.4Ice定位器属性
20.5.5用法
20.5.6配置
20.5.7定位服务
20.6节IcePack节点
20.6.1Server 激活
20.6.2端点注册
20.6.3服务器注册与解除激活
20.6.4用法
20.6.5配置
20.7节IcePack 管理工具
20.7.1用法
20.8节部署
20.8.1应用描述符
20.8.2服务器描述符
20.8.3服务描述符
20.8.4要求
20.8.5配置服务器和服务
20.8.6部署例子
20.8.7目标部署
20.9节描述符参考资料
20.9.1应用元素
20.9.2Server 元素
20.9.3Service 元素
20.9.4共有的元素
20.9.5路径名语义
20.9.6描述符变量
20.10节排除故障
20.10.1激活故障
20.10.2代理故障
20.10.3部署故障
20.10.4服务器故障
20.11节总结
第21章Freeze
21.1节本章综述
21.2节引言
21.3节Freeze映射表
21.3.1Freeze 连接
21.3.2事务
21.3.3迭代器
21.3.4从死锁异常中恢复
21.3.5在C++中使用一个简单的映射表
21.3.6在Java中使用一个简单的映射表
21.4节在文件系统服务器中使用Freeze映射表
21.4.1选择键和值类型
21.4.2用C++ 实现文件系统服务器
21.4.3用Java 实现文件服务器
21.5节Freeze 逐出器
21.5.1对象工厂
21.5.2Facets
21.5.3检测更新
21.5.4负责进行保存的线程
21.5.5同步
21.5.6索引
21.5.7使用Servant 初始化器
21.5.8应用设计考虑事项
21.6节在文件服务器中使用Freeze 逐出器
21.6.1Slice定义
21.6.2用C++实现文件系统服务器
21.6.3用Java 实现文件系统服务器
21.7节总结
第22章FreezeScript
22.1节本章综述
22.2节引言
22.3节数据库迁移
22.3.1缺省转换
22.3.2类型兼容性
22.3.3缺省值
22.3.4进行自动转换
22.3.5定制迁移
22.4节转换描述符
22.4.1综述
22.4.2执行流
22.4.3作用域
22.4.4描述符参考资料
22.4.5描述符指导方针
22.5节使用transformdb
22.5.1一般选项
22.5.2数据库参数
22.5.3自动迁移
22.5.4定制迁移
22.5.5转换对象
22.6节数据库审查
22.6.1描述符综述
22.6.2执行流
22.6.3作用域
22.6.4描述符参考资料
22.7节使用dumpdb
22.7.1选项
22.7.2数据库参数
22.7.3用例
22.8节描述符表达式语言
22.8.1运算符
22.8.2直接量
22.8.3符号
22.8.4Nil
22.8.5元素
22.8.6保留的关键字
22.8.7隐含的成员
22.8.8函数
22.9节总结
第23章IceSSL
23.1节本章综述
23.2节引言
23.2.1SSL 综述
23.2.2公钥基础设施
23.2.3要求
23.3节配置IceSSL
23.3.1RSA例子
23.3.2ADH例子
23.3.3配置文件策略
23.4节配置应用
23.4.1安装 IceSSL
23.4.2创建SSL端点
23.4.3安全考虑事项
23.5节配置参考资料
23.5.1结构
23.5.2basecerts
23.5.3certauthority
23.5.4client
23.5.5dhparams
23.5.6dsacert
23.5.7general
23.5.8private
23.5.9public
23.5.10rsacert
23.5.11server
23.5.12SSLConfig
23.5.13tempcerts
23.6节IceSSL编程
23.7节总结
第24章Glacier
24.1节本章综述
24.2节引言
24.2.1常见情况
24.2.2什么是Glacier?
24.2.3工作方式
24.3节使用Glacier
24.3.1配置路由器
24.3.2启动路由器
24.3.3配置客户
24.3.4例子
24.4节回调
24.4.1双向连接
24.4.2双向连接的生命期
24.4.3回调要求
24.4.4配置路由器
24.4.5配置客户对象适配器
24.4.6活动连接管理
24.4.7对象适配器策略
24.4.8使用多个路由器
24.4.9例子
24.5节Glacier启动器
24.5.1配置启动器
24.5.2启动启动器
24.5.3使用启动器
24.6节Glacier的安全性
24.6.1访问控制
24.6.2过滤
24.6.3保护路由器
24.7节总结
第25章IceBox
25.1节本章综述
25.2节引言
25.3节服务管理器
25.3.1端点配置
25.3.2客户配置
25.3.3管理实用程序
25.4节开发服务
25.4.1C++服务例子
25.4.2Java服务例子
25.4.3配置服务器
25.4.4Freeze服务
25.5节启动IceBox
25.5.1启动 C++服务器
25.5.2启动Java服务器
25.5.3初始化失败
25.6节总结
第26章IceStorm
26.1节本章综述
26.2节引言
26.3节概念
26.3.1消息
26.3.2主题
26.3.3单向语义
26.3.4联盟
26.3.5服务质量
26.3.6持久
26.3.7订阅者出错
26.4节IceStorm接口综述
26.4.1TopicManager
26.4.2Topic
26.5节使用IceStorm
26.5.1实现发布订阅者
26.5.2使用发布者对象
26.5.3实现订阅者
26.6节IceStorm的管理
26.7节主题联盟
26.7.1消息传播
26.7.2成本
26.7.3联盟自动化
26.8节服务质量
26.8.1可靠性
26.8.2例子
26.9节配置 IceStorm
26.9.1服务器配置
26.9.2客户配置
26.10节总结
第27章附录A Slice 关键字
第28章附录B Slice文档
28.1节B.1Ice
Ice 分布式程序设计 Michi Henning Mark Spruiell 以下人士为本文档做出了贡献 Benoit Foucher, Marc Laukien, Matthew Newhook, Bernard Normier 马维达 译 制造商和销售商用来区分其产品的许多名称已被声明为商标。如果这些名称在本书中出现,而 且 ZeroC 注意到其商标声明,则名称的首字母或所有字母会大写。 本书的作者及出版者精心制作了本书,但不提供任何类型的担保,无论是明确的还是隐含,同 时也不对错误或疏漏承担任何责任。如果本书包含的信息或程序在使用时引发偶然或继起的损坏, 本书作者及出版者不承担任何责任。 版权所有 2004 by ZeroC,Inc. http://www.zeroc.com 修订版 1.3.0,2004 年 3 月 1 日 本修订版文档描述的是 Ice1.3 版。 Ice 源码包使用了以下第三方产品: Berkeley DB,由 Sleepycat Software 开发(http://www.sleepycat.com) bzip2/libbzip2,由 Julian R. Seward 开发(http://sources.redhat.com/bzip2) The OpenSSL Toolkit,由 OpenSSL Project 开发(http://www.openssl.org) SSLeay,由 Eric Young 开发(mailto:eay@cryptsoft.com) Expat,由 James Clark 开发(http://www.libexpat.org) 上述各产品的授权协议,见 Ice 源码包。 Note:文档中含有一些标注为"XREF"的交叉引用,它们指向的是还未写成、但将在未来加入的 内容。
目录 Ice 分布式程序设计 ................................................................... 1 第 1 章 引言 ................................................................... 16 1.1 节 引言 ................................................................... 16 1.2 节 Internet Communications Engine(Ice) .............................. 17 1.3 节 本书的篇章结构 ......................................................... 17 1.4 节 排字约定 ............................................................... 18 1.5 节 源码示例 ............................................................... 18 1.6 节 联系作者 ............................................................... 18 1.7 节 Ice 支持 ............................................................ 18 第一部分 Ice 综述 ................................................................... 19 第 2 章 Ice 综述 ................................................................ 19 2.1 节 本章综述 ............................................................... 19 Ice 架构 ............................................................ 19 2.2 节 2.2.1 引言 ............................................................... 19 2.2.2 术语 ............................................................... 19 2.2.3 Slice (Ice 规范语言) .............................................. 25 2.2.4 语言映射 ........................................................... 25 2.2.5 客户与服务器的结构 ................................................. 25 2.2.6 Ice 协议 ............................................................ 27 2.2.7 对象持久 ........................................................... 27 Ice 服务 ............................................................ 28 IcePack ............................................................ 28 IceBox ............................................................. 28 IceStorm ........................................................... 28 IcePatch ........................................................... 29 Glacier ............................................................ 29 2.4 节 Ice 在架构上提供的好处 .............................................. 29 2.5 节 与 CORBA 的对比 ......................................................... 30 2.5.1 对象模型的差异 ..................................................... 30 2.5.2 平台支持的差异 ..................................................... 31 2.5.3 复杂性上的差异 ..................................................... 32 Hello World 应用 ........................................................ 33 3.1 节 本章综述 ............................................................... 33 3.2 节 编写 Slice 定义 ......................................................... 33 3.3 节 编写使用 C++的 Ice 应用 .................................................. 33 3.4 节 编写使用 Java 的 Ice 应用 ................................................ 39 3.5 节 总结 ................................................................... 44 第二部分 Ice 核心概念 ............................................................... 45 第 4 章 Slice 语言 .............................................................. 45 4.1 节 本章综述 ............................................................... 45 4.2 节 引言 ................................................................... 45 4.3 节 编译 ................................................................... 45 2.3.1 2.3.2 2.3.3 2.3.4 2.3.5 2.3 节 第 3 章
4.3.1 客户与服务器使用同一种开发环境 ..................................... 46 4.3.2 客户和服务器使用不同的开发环境 ..................................... 47 4.4 节 源文件 ................................................................. 48 4.4.1 文件命名 ........................................................... 48 4.4.2 文件格式 ........................................................... 48 4.4.3 预处理 ............................................................. 48 4.4.4 定义次序 ........................................................... 49 4.5 节 词法规则 ............................................................... 49 4.5.1 注释 ............................................................... 49 4.5.2 关键字 ............................................................. 49 4.5.3 标识符 ............................................................. 49 4.6 节 基本的 Slice 类型 ....................................................... 50 4.6.1 整数类型 ........................................................... 51 4.6.2 浮点类型 ........................................................... 51 4.6.3 串 ................................................................. 51 4.6.4 布尔值 ............................................................. 52 4.6.5 字节 ............................................................... 52 4.7 节 用户定义的类型 ......................................................... 52 4.7.1 枚举 ............................................................... 52 4.7.2 结构 ............................................................... 52 4.7.3 序列 ............................................................... 53 4.7.4 词典 ............................................................... 54 4.7.5 常量定义与直接量 ................................................... 55 4.8 节 接口、操作,以及异常 ................................................... 58 4.8.1 参数与返回值 ....................................................... 59 4.8.2 用户异常 ........................................................... 62 4.8.3 异常继承 ........................................................... 63 4.8.4 运行时异常 ......................................................... 66 4.8.5 接口语义与代理 ..................................................... 69 4.8.6 接口继承 ........................................................... 71 4.9 节 类 ..................................................................... 78 4.9.1 简单类 ............................................................. 79 4.9.2 类继承 ............................................................. 79 4.9.3 类的继承语义 ....................................................... 80 4.9.4 类用作联合 ......................................................... 82 4.9.5 自引用的类 ......................................................... 83 4.9.6 类 vs.结构 .......................................................... 86 4.9.7 有操作的类 ......................................................... 86 4.9.8 类在架构上的影响 ................................................... 87 4.9.9 实现接口的类 ....................................................... 88 类继承的局限 ................................................... 90 4.9.10 传值 vs. 传引用 ................................................. 91 4.9.11 提前声明 ........................................................... 93 模块 ............................................................... 94 4.10 节 4.11 节
4.19.1 4.19.2 4.20 节 第 5 章 第 6 章 4.17 节 4.18 节 4.19 节 4.16.1 4.16.2 4.16.3 4.16.4 4.12 节 4.13 节 4.14 节 4.15 节 4.16 节 类型 ID ............................................................. 96 Object 上的操作 ..................................................... 97 本地类型 ........................................................... 98 Ice 模块 ............................................................ 99 名字与作用域 ....................................................... 99 名字作用域 ..................................................... 99 大小写敏感性 .................................................. 100 嵌套作用域中的名字 ............................................ 101 名字查找规则 .................................................. 102 元数据 ............................................................ 103 使用 Slice 编译器 .................................................. 104 Slice 与 CORBA IDL 的对比 ........................................... 105 Slice 有、而 CORBA IDL 没有的特性 ............................... 105 CORBA IDL 有、而 Slice 没有的特性 ............................... 106 总结 .............................................................. 111 一个简单文件系统的 Slice 定义 .......................................... 111 5.1 节 本章综述 .............................................................. 111 5.2 节 文件系统应用 .......................................................... 111 5.3 节 文件系统的 Slice 定义 .................................................. 112 5.4 节 完整的定义 ............................................................ 114 客户端的 Slice-to-C++映射 .............................................. 115 6.1 节 本章综述 .............................................................. 115 6.2 节 引言 .................................................................. 115 6.3 节 标识符的映射 .......................................................... 115 6.4 节 模块的映射 ............................................................ 116 6.5 节 Ice 名字空间 ...................................................... 117 6.6 节 简单内建类型的映射 .................................................... 117 6.7 节 用户定义类型的映射 .................................................... 117 6.7.1 枚举的映射 ........................................................ 118 6.7.2 结构的映射 ........................................................ 118 6.7.3 序列的映射 ........................................................ 120 6.7.4 词典的映射 ........................................................ 120 6.8 节 常量的映射 ............................................................ 121 6.9 节 异常的映射 ............................................................ 122 运行时异常的映射 .................................................. 125 6.10 节 6.11 节 接口的映射 ........................................................ 126 代理类和代理句柄 .............................................. 126 代理句柄上的方法 .............................................. 127 对象标识与代理比较 ............................................ 131 操作的映射 ........................................................ 133 普通的、 idempotent,以及 nonmutating 操作 ..................... 134 传递参数 ...................................................... 134 异常处理 .......................................................... 139 类的映射 .......................................................... 141 6.11.1 6.11.2 6.11.3 6.12.1 6.12.2 6.12 节 6.13 节 6.14 节
6.15 节 6.16 节 6.14.1 6.14.2 6.14.3 6.14.4 6.14.5 从 Ice::Object 继承 ............................................ 143 类的数据成员 .................................................. 144 类的操作 ...................................................... 144 类工厂 ........................................................ 145 用于类的智能指针 .............................................. 147 slice2cpp 命令行选项 .............................................. 156 与 CORBA C++映射比较 ............................................... 156 开发 C++文件系统客户 ................................................... 156 7.1 节 本章综述 .............................................................. 156 7.2 节 C++客户 ........................................................... 156 7.3 节 总结 .................................................................. 162 客户端的 Slice-to-Java 映射 ............................................ 162 8.1 节 本章综述 .............................................................. 162 8.2 节 引言 .................................................................. 162 8.3 节 标识符的映射 .......................................................... 163 8.4 节 模块的映射 ............................................................ 163 8.5 节 Ice Package ....................................................... 164 8.6 节 简单内建类型的映射 .................................................... 164 8.7 节 用户定义类型的映射 .................................................... 165 8.7.1 枚举的映射 ........................................................ 165 8.7.2 结构的映射 ........................................................ 167 8.7.3 序列的映射 ........................................................ 168 8.7.4 词典的映射 ........................................................ 169 8.8 节 常量的映射 ............................................................ 169 8.9 节 异常的映射 ............................................................ 170 运行时异常的映射 .................................................. 172 8.10 节 8.11 节 接口的映射 ........................................................ 172 代理接口 ...................................................... 173 Ice.ObjectPrx 接口 ............................................. 174 代理助手 ...................................................... 176 操作的映射 ........................................................ 178 普通的、idempotent,以及 nonmutating 操作 ...................... 178 传递参数 ...................................................... 179 异常处理 .......................................................... 184 类的映射 .......................................................... 186 类工厂 ........................................................ 187 Package ........................................................... 189 slice2java 命令行选项 .............................................. 190 开发 Java 文件系统客户 ................................................. 191 9.1 节 本章综述 .............................................................. 191 9.2 节 Java 客户 .......................................................... 191 9.3 节 总结 .................................................................. 196 服务器端的 Slice-to-C++映射 ............................................ 196 本章综述 .......................................................... 196 8.13 节 8.14 节 8.11.1 8.11.2 8.11.3 8.12.1 8.12.2 8.14.1 8.15 节 8.16 节 8.12 节 第 7 章 第 8 章 第 9 章 第 10 章 10.1 节
10.2 节 10.3 节 10.4 节 10.3.1 10.3.2 10.4.1 10.4.2 10.5 节 10.6 节 10.7 节 10.7.1 10.7.2 10.7.3 10.7.4 10.7.5 11.2.1 11.2.2 11.2.3 10.8 节 第 11 章 11.1 节 11.2 节 11.3 节 第 12 章 12.1 节 12.2 节 12.3 节 引言 .............................................................. 196 服务器端 main 函数 ................................................. 196 Ice::Application 类 ............................................ 198 Ice::Service 类 ................................................ 202 接口的映射 ........................................................ 208 骨架类 ........................................................ 208 Servant 类 ..................................................... 209 参数传递 .......................................................... 210 引发异常 .......................................................... 211 对象体现 .......................................................... 212 实例化 Servant ................................................. 212 创建标识 ...................................................... 213 激活 Servant .................................................. 213 用 UUID 做标识 ................................................. 214 创建代理 ...................................................... 215 总结 .............................................................. 216 开发 C++文件系统服务器 ................................................. 216 本章综述 .......................................................... 216 实现文件系统服务器 ................................................ 216 服务器的 main 程序 ............................................. 217 Servant 类定义 ................................................. 223 Servant 实现 .................................................. 227 总结 .............................................................. 231 服务器端的 Slice-to-Java 映射 .......................................... 232 Chapter Overview .................................................. 232 引言 .............................................................. 232 服务器端 main 函数 ................................................. 232 Ice.Application 类 ............................................. 233 接口的映射 ........................................................ 236 骨架类 ........................................................ 236 Servant 类 ..................................................... 237 参数传递 .......................................................... 238 引发异常 .......................................................... 239 Tie 类 ............................................................. 240 对象体现 .......................................................... 244 Instantiating a Servant ....................................... 244 创建标识 ...................................................... 244 激活 Servant .................................................. 245 用 UUID 做标识 ................................................. 245 创建代理 ...................................................... 246 总结 .............................................................. 247 开发 Java 文件系统服务器 ............................................... 247 本章综述 .......................................................... 247 实现文件系统服务器 ................................................ 247 12.4 节 12.3.1 12.4.1 12.4.2 12.5 节 12.6 节 12.7 节 12.8 节 12.8.1 12.8.2 12.8.3 12.8.4 12.8.5 12.9 节 第 13 章 13.1 节 13.2 节
13.3 节 第 14 章 14.1 节 14.2 节 14.3 节 14.4 节 14.5 节 14.6 节 14.7 节 14.8 节 14.9 节 第 15 章 15.1 节 15.2 节 15.3 节 15.4 节 15.5 节 13.2.1 13.2.2 13.2.3 14.2.1 14.2.2 14.2.3 14.2.4 14.8.1 14.8.2 14.8.3 14.8.4 14.8.5 服务器的 main 程序 ............................................. 248 FileI Servant 类 ............................................... 251 DirectoryI Servant 类 .......................................... 253 总结 .............................................................. 255 Ice 属性与配置 ......................................................... 255 本章综述 .......................................................... 255 属性 .............................................................. 255 属性范畴 ...................................................... 255 保留的前缀 .................................................... 256 属性语法 ...................................................... 256 值语法 ........................................................ 256 配置文件 .......................................................... 256 在命令行上设置属性 ................................................ 257 Ice.Config 属性 .................................................... 258 命令行解析与初始化 ................................................ 258 Ice.ProgramName 属性 ............................................... 260 在程序中使用属性 .................................................. 260 读取属性 ...................................................... 261 设置属性 ...................................................... 262 解析属性 ...................................................... 263 实用操作 ...................................................... 265 处理多个属性集 ................................................ 265 总结 .............................................................. 268 C++ 线程与并发 ........................................................ 269 本章综述 .......................................................... 269 引言 .............................................................. 269 Ice 线程模型 ...................................................... 269 线程库综述 ........................................................ 269 互斥体 ............................................................ 270 文件系统应用的线程安全的文件访问 .............................. 271 保证互斥体的解锁 .............................................. 272 递归互斥体 ........................................................ 274 读写递归互斥体 .................................................... 276 定时锁 ............................................................ 279 监控器 ............................................................ 282 Monitor 类 ..................................................... 282 使用监控器 .................................................... 284 高效通知 ...................................................... 286 效率考虑事项 .................................................. 289 线程 .............................................................. 290 Thread 类 ...................................................... 290 实现线程 ...................................................... 291 创建线程 ...................................................... 292 ThreadControl 类 ............................................... 292 15.5.1 15.5.2 15.6 节 15.7 节 15.8 节 15.9 节 15.10 节 15.9.1 15.9.2 15.9.3 15.9.4 15.10.1 15.10.2 15.10.3 15.10.4
16.1 节 16.2 节 16.3 节 16.3.1 16.3.2 16.3.3 16.3.4 16.3.5 16.4 节 16.5 节 16.6 节 15.10.5 15.10.6 15.11 节 一个小例子 .................................................... 294 可移植的信号处理 .............................................. 295 总结 .............................................................. 296 第三部分 高级 Ice .................................................................. 296 Ice Run Time 详解 ..................................................... 297 第 16 章 引言 .............................................................. 297 通信器 ............................................................ 297 对象适配器 ........................................................ 300 活动 Servant 映射表 ............................................ 300 Servant ....................................................... 301 对象适配器接口 ................................................ 301 Servant 激活与解除激活 ........................................ 302 适配器状态 .................................................... 303 对象标识 .......................................................... 305 Ice::Current 对象 .................................................. 306 Servant 定位器 ..................................................... 307 综述 .......................................................... 307 Servant 定位器接口 ............................................. 308 针对 Servant 定位器的线程保证 .................................. 309 Servant 定位器注册 ............................................. 310 实现一个简单的 Servant 定位器 .................................. 311 使用对象标识的 category 成员 ................................... 315 使用 Cookies ................................................... 317 服务器实现技术 .................................................... 318 渐进的初始化 .................................................. 318 缺省 Servants ................................................. 322 混合途径及缓存 ................................................ 324 Servant 逐出器 ................................................ 324 Ice::Context ...................................................... 337 显式传递上下文 ................................................ 337 隐式传递上下文 ................................................ 338 取回隐式的上下文 .............................................. 339 上下文用例 .................................................... 340 警告 .......................................................... 340 调用超时 .......................................................... 341 单向调用 .......................................................... 342 数据报调用 ........................................................ 345 成批的调用 ........................................................ 347 测试代理的分派类型 ................................................ 348 Ice::Logger 接口 ................................................... 348 Ice::Stats ........................................................ 349 位置透明性 ........................................................ 350 16.17 对比 Ice 与 CORBA Run Time ................................... 351 总结 .............................................................. 352 16.9 节 16.10 节 16.11 节 16.12 节 16.13 节 16.14 节 16.15 节 16.16 节 16.17 节 16.18 节 16.8.1 16.8.2 16.8.3 16.8.4 16.8.5 16.6.1 16.6.2 16.6.3 16.6.4 16.6.5 16.6.6 16.6.7 16.7.1 16.7.2 16.7.3 16.7.4 16.7 节 16.8 节
分享到:
收藏