logo资料库

zeroc ice教程 ice环境配置 Ice中文教程 C++ ICE java ICE ICE入门 ice基础教程 ice开发文档.pdf

第1页 / 共954页
第2页 / 共954页
第3页 / 共954页
第4页 / 共954页
第5页 / 共954页
第6页 / 共954页
第7页 / 共954页
第8页 / 共954页
资料共954页,剩余部分请下载后查看
引言
1.1 引言
1.2 Internet Communications Engine (Ice)
1.3 本书的篇章结构
1.4 排字约定
1.5 源码示例
1.6 联系作者
1.7 Ice支持
Ice综述
2.1 本章综述
2.2 Ice架构
2.2.1 引言
2.2.2 术语
2.2.3 Slice (Ice规范语言)
2.2.4 语言映射
2.2.5 客户与服务器的结构
2.2.6 Ice协议
2.2.7 对象持久
2.3 Ice服务
2.3.1 IcePack
2.3.2 IceBox
2.3.3 IceStorm
2.3.4 IcePatch
2.3.5 Glacier
2.4 Ice在架构上提供的好处
2.5 与CORBA的对比
2.5.1 对象模型的差异
2.5.2 平台支持的差异
2.5.3 复杂性上的差异
Hello World应用
3.1 本章综述
3.2 编写Slice定义
3.3 编写使用C++的Ice应用
3.4 编写使用Java的Ice应用
3.5 总结
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 Ice运行时异常
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.1 Slice有、而CORBA IDL没有的特性
4.19.2 CORBA IDL有、而Slice没有的特性
4.20 总结
一个简单文件系统的Slice定义
5.1 本章综述
5.2 文件系统应用
5.3 文件系统的Slice定义
5.4 完整的定义
客户端的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++映射比较
开发C++文件系统客户
7.1 本章综述
7.2 C++客户
7.3 总结
客户端的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.2 Ice.ObjectPrx接口
8.11.3 代理助手
8.12 操作的映射
8.12.1 普通的、idempotent,以及nonmutating操作
8.12.2 传递参数
8.13 异常处理
8.14 类的映射
8.14.1 类工厂
8.14.2 从LocalObject继承
8.15 Package
8.16 slice2java命令行选项
开发Java文件系统客户
9.1 本章综述
9.2 Java客户
9.3 总结
服务器端的Slice-to-C++映射
10.1 本章综述
10.2 引言
10.3 服务器端main函数
10.3.1 Ice::Application类
10.3.2 Ice::Service类
10.4 接口的映射
10.4.1 骨架类
10.4.2 Servant类
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 总结
开发C++文件系统服务器
11.1 本章综述
11.2 实现文件系统服务器
11.2.1 服务器的main程序
11.2.2 Servant类定义
11.2.3 Servant实现
11.3 总结
服务器端的Slice-to-Java映射
12.1 Chapter Overview
12.2 引言
12.3 服务器端main函数
12.3.1 Ice.Application类
12.4 接口的映射
12.4.1 骨架类
12.4.2 Servant类
12.5 参数传递
12.6 引发异常
12.7 Tie类
12.8 对象体现
12.8.1 Instantiating a Servant
12.8.2 创建标识
12.8.3 激活Servant
12.8.4 用UUID做标识
12.8.5 创建代理
12.9 总结
开发Java文件系统服务器
13.1 本章综述
13.2 实现文件系统服务器
13.2.1 服务器的main程序
13.2.2 FileI Servant类
13.2.3 DirectoryI Servant类
13.3 总结
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 总结
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.1 Monitor类
15.9.2 使用监控器
15.9.3 高效通知
15.9.4 效率考虑事项
15.10 线程
15.10.1 Thread类
15.10.2 实现线程
15.10.3 创建线程
15.10.4 ThreadControl类
15.10.5 一个小例子
15.11 可移植的信号处理
15.12 总结
Ice Run Time详解
16.1 引言
16.2 通信器
16.3 对象适配器
16.3.1 活动Servant映射表
16.3.2 Servant
16.3.3 对象适配器接口
16.3.4 Servant激活与解除激活
16.3.5 适配器状态
16.4 对象标识
16.5 Ice::Current对象
16.6 Servant定位器
16.6.1 综述
16.6.2 Servant定位器接口
16.6.3 针对Servant定位器的线程保证
16.6.4 Servant定位器注册
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.4 Servant逐出器
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 对比Ice与CORBA Run Time
16.18 总结
异步程序设计
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 总结
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的对比
Ice的PHP扩展
19.1 本章综述
19.2 引言
19.2.1 能力
19.2.2 局限
19.2.3 设计
19.3 配置
19.3.1 Profile
19.3.2 缺省Profile
19.3.3 有名字的Profile
19.3.4 Profile函数
19.3.5 Slice语义
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.11 Ice::Communicator的映射
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.4 Ice定位器属性
20.5.5 用法
20.5.6 配置
20.5.7 定位服务
20.6 IcePack节点
20.6.1 Server激活
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.2 Server元素
20.9.3 Service元素
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 总结
Freeze
21.1 本章综述
21.2 引言
21.3 Freeze映射表
21.3.1 Freeze连接
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.2 Facets
21.5.3 检测更新
21.5.4 负责进行保存的线程
21.5.5 同步
21.5.6 索引
21.5.7 使用Servant初始化器
21.5.8 应用设计考虑事项
21.6 在文件服务器中使用Freeze逐出器
21.6.1 Slice定义
21.6.2 用C++实现文件系统服务器
21.6.3 用Java实现文件系统服务器
21.7 总结
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.4 Nil
22.8.5 元素
22.8.6 保留的关键字
22.8.7 隐含的成员
22.8.8 函数
22.9 总结
IceSSL
23.1 本章综述
23.2 引言
23.2.1 SSL综述
23.2.2 公钥基础设施
23.2.3 要求
23.3 配置IceSSL
23.3.1 RSA例子
23.3.2 ADH例子
23.3.3 配置文件策略
23.4 配置应用
23.4.1 安装IceSSL
23.4.2 创建SSL端点
23.4.3 安全考虑事项
23.5 配置参考资料
23.5.1 结构
23.5.2 basecerts
23.5.3 certauthority
23.5.4 client
23.5.5 dhparams
23.5.6 dsacert
23.5.7 general
23.5.8 private
23.5.9 public
23.5.10 rsacert
23.5.11 server
23.5.12 SSLConfig
23.5.13 tempcerts
23.6 IceSSL编程
23.7 总结
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 总结
IceBox
25.1 本章综述
25.2 引言
25.3 服务管理器
25.3.1 端点配置
25.3.2 客户配置
25.3.3 管理实用程序
25.4 开发服务
25.4.1 C++服务例子
25.4.2 Java服务例子
25.4.3 配置服务器
25.4.4 Freeze服务
25.5 启动IceBox
25.5.1 启动C++服务器
25.5.2 启动Java服务器
25.5.3 初始化失败
25.6 总结
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.1 TopicManager
26.4.2 Topic
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 总结
Slice关键字
Slice文档
B.1 Ice
B.2 Ice::AbortBatchRequestException
B.3 Ice::AdapterAlreadyActiveException
B.4 Ice::AdapterNotFoundException
B.5 Ice::AlreadyRegisteredException
B.6 Ice::BadMagicException
B.7 Ice::CloseConnectionException
B.8 Ice::CloseTimeoutException
B.9 Ice::CollocationOptimizationException
B.10 Ice::Communicator
B.11 Ice::CommunicatorDestroyedException
B.12 Ice::CompressionException
B.13 Ice::CompressionNotSupportedException
B.14 Ice::ConnectFailedException
B.15 Ice::ConnectTimeoutException
B.16 Ice::ConnectionLostException
B.17 Ice::ConnectionNotValidatedException
B.18 Ice::ConnectionTimeoutException
B.19 Ice::Current
B.20 Ice::DNSException
B.21 Ice::DatagramLimitException
B.22 Ice::EncapsulationException
B.23 Ice::EndpointParseException
B.24 Ice::FacetNotExistException
B.25 Ice::Identity
B.26 Ice::IdentityParseException
B.27 Ice::IllegalIdentityException
B.28 Ice::IllegalIndirectionException
B.29 Ice::IllegalMessageSizeException
B.30 Ice::Locator
B.31 Ice::LocatorRegistry
B.32 Ice::Logger
B.33 Ice::MarshalException
B.34 Ice::MemoryLimitException
B.35 Ice::NegativeSizeException
B.36 Ice::NoEndpointException
B.37 Ice::NoObjectFactoryException
B.38 Ice::NotRegisteredException
B.39 Ice::ObjectAdapter
B.40 Ice::ObjectAdapterDeactivatedException
B.41 Ice::ObjectAdapterIdInUseException
B.42 Ice::ObjectFactory
B.43 Ice::ObjectNotExistException
B.44 Ice::ObjectNotFoundException
B.45 Ice::OperationMode
B.46 Ice::OperationNotExistException
B.47 Ice::Plugin
B.48 Ice::PluginInitializationException
B.49 Ice::PluginManager
B.50 Ice::Process
B.51 Ice::Properties
B.52 Ice::ProtocolException
B.53 Ice::ProxyParseException
B.54 Ice::ProxyUnmarshalException
B.55 Ice::RequestFailedException
B.56 Ice::Router
B.57 Ice::ServantLocator
B.58 Ice::ServerNotFoundException
B.59 Ice::SocketException
B.60 Ice::Stats
B.61 Ice::SyscallException
B.62 Ice::TimeoutException
B.63 Ice::TwowayOnlyException
B.64 Ice::UnknownException
B.65 Ice::UnknownLocalException
B.66 Ice::UnknownMessageException
B.67 Ice::UnknownReplyStatusException
B.68 Ice::UnknownRequestIdException
B.69 Ice::UnknownUserException
B.70 Ice::UnmarshalOutOfBoundsException
B.71 Ice::UnsupportedEncodingException
B.72 Ice::UnsupportedProtocolException
B.73 Ice::VersionMismatchException
B.74 Freeze
B.75 Freeze::Connection
B.76 Freeze::DatabaseException
B.77 Freeze::DeadlockException
B.78 Freeze::EmptyFacetPathException
B.79 Freeze::Evictor
B.80 Freeze::EvictorDeactivatedException
B.81 Freeze::EvictorIterator
B.82 Freeze::EvictorStorageKey
B.83 Freeze::InvalidPositionException
B.84 Freeze::NoSuchElementException
B.85 Freeze::NotFoundException
B.86 Freeze::ObjectRecord
B.87 Freeze::ServantInitializer
B.88 Freeze::Statistics
B.89 Freeze::Transaction
B.90 Freeze::TransactionAlreadyInProgressException
B.91 IceBox
B.92 IceBox::FailureException
B.93 IceBox::FreezeService
B.94 IceBox::Service
B.95 IceBox::ServiceBase
B.96 IceBox::ServiceManager
B.97 IcePack
B.98 IcePack::AdapterDeploymentException
B.99 IcePack::AdapterNotExistException
B.100 IcePack::Admin
B.101 IcePack::BadSignalException
B.102 IcePack::DeploymentException
B.103 IcePack::NodeNotExistException
B.104 IcePack::NodeUnreachableException
B.105 IcePack::ObjectDeploymentException
B.106 IcePack::ObjectExistsException
B.107 IcePack::ObjectNotExistException
B.108 IcePack::ParserDeploymentException
B.109 IcePack::Query
B.110 IcePack::ServerActivation
B.111 IcePack::ServerDeploymentException
B.112 IcePack::ServerDescription
B.113 IcePack::ServerNotExistException
B.114 IcePack::ServerState
B.115 IceSSL
B.116 IceSSL::CertificateException
B.117 IceSSL::CertificateKeyMatchException
B.118 IceSSL::CertificateLoadException
B.119 IceSSL::CertificateParseException
B.120 IceSSL::CertificateSignatureException
B.121 IceSSL::CertificateSigningException
B.122 IceSSL::CertificateVerificationException
B.123 IceSSL::CertificateVerifier
B.124 IceSSL::CertificateVerifierTypeException
B.125 IceSSL::ConfigParseException
B.126 IceSSL::ConfigurationLoadingException
B.127 IceSSL::ContextException
B.128 IceSSL::ContextInitializationException
B.129 IceSSL::ContextNotConfiguredException
B.130 IceSSL::ContextType
B.131 IceSSL::Plugin
B.132 IceSSL::PrivateKeyException
B.133 IceSSL::PrivateKeyLoadException
B.134 IceSSL::PrivateKeyParseException
B.135 IceSSL::ProtocolException
B.136 IceSSL::ShutdownException
B.137 IceSSL::SslException
B.138 IceSSL::TrustedCertificateAddException
B.139 IceSSL::UnsupportedContextException
B.140 Glacier
B.141 Glacier::CannotStartRouterException
B.142 Glacier::NoSessionManagerException
B.143 Glacier::PermissionDeniedException
B.144 Glacier::PermissionsVerifier
B.145 Glacier::Router
B.146 Glacier::Session
B.147 Glacier::SessionManager
B.148 Glacier::Starter
B.149 IceStorm
B.150 IceStorm::LinkExists
B.151 IceStorm::LinkInfo
B.152 IceStorm::NoSuchLink
B.153 IceStorm::NoSuchTopic
B.154 IceStorm::Topic
B.155 IceStorm::TopicExists
B.156 IceStorm::TopicManager
B.157 IcePatch
B.158 IcePatch::BusyException
B.159 IcePatch::Directory
B.160 IcePatch::DirectoryDesc
B.161 IcePatch::File
B.162 IcePatch::FileAccessException
B.163 IcePatch::FileDesc
B.164 IcePatch::Regular
B.165 IcePatch::RegularDesc
属性
C.1 Ice配置属性
C.2 Ice跟踪属性
C.3 Ice警告属性
C.4 Ice对象适配器属性
C.5 Ice插件属性
C.6 Ice线程池属性
C.7 Ice的Default和Override属性
C.8 Ice杂项属性
C.9 IceSSL属性
C.10 IceBox属性
C.11 IcePack属性
C.12 IceStorm属性
C.13 Glacier路由器属性
C.14 Glacier路由器启动器属性
C.15 Freeze属性
代理与端点
D.1 代理
D.2 端点
参考文献
Ice 分布式程序设计 Michi Henning Mark Spruiell 以下人士为本文档做出了贡献 Benoit Foucher, Marc Laukien, Matthew Newhook, Bernard Normier 马维达 译
制造商和销售商用来区分其产品的许多名称已被声明为商标。如果这些名称在本书中出现,而 且 ZeroC 注意到其商标声明,则名称的首字母或所有字母会大写。 本书的作者及出版者精心制作了本书,但不提供任何类型的担保,无论是明确的还是隐含,同 时也不对错误或疏漏承担任何责任。如果本书包含的信息或程序在使用时引发偶然或继起的损 坏,本书作者及出版者不承担任何责任。 版权所有 © 2004 by ZeroC, Inc. mailto:info@zeroc.com http://www.zeroc.com 修订版 1.3.0, 2004 年 3 月 1 日 本修订版文档描述的是 Ice 1.3 版。 关于中文版的意见、建议,请发送至:weida@flyingdonkey.com http://www.flyingdonkey.com 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”的交叉引用,它们指向的是还未写成、但 将在未来加入的内容。
目录 第 1 章 Internet Communications Engine (Ice) 引言 1.1 引言 1.2 1.3 本书的篇章结构 1.4 排字约定 1.5 源码示例 1.6 联系作者 1.7 Ice 支持 第一部分 Ice 综述 第 2 章 第 3 章 Ice 综述 2.1 本章综述 2.2 Ice 架构 Ice 服务 2.3 2.4 Ice 在架构上提供的好处 2.5 与 CORBA 的对比 Hello World 应用 3.1 本章综述 3.2 编写 Slice 定义 3.3 编写使用 C++ 的 Ice 应用 3.4 编写使用 Java 的 Ice 应用 3.5 总结 1 1 3 4 4 5 5 5 7 9 9 9 21 23 25 33 33 33 34 41 48 iii
iv Contents 第二部分 Ice 核心概念 第 4 章 Slice 语言 4.1 本章综述 4.2 引言 4.3 编译 4.4 源文件 4.5 词法规则 4.6 基本的 Slice 类型 4.7 用户定义的类型 4.8 接口、操作,以及异常 4.9 类 4.10 提前声明 4.11 模块 4.12 类型 ID 4.13 Object 上的操作 4.14 本地类型 4.15 Ice 模块 4.16 名字与作用域 4.17 元数据 4.18 使用 Slice 编译器 4.19 4.20 总结 Slice 与 CORBA IDL 的对比 第 5 章 一个简单文件系统的 Slice 定义 5.1 本章综述 5.2 文件系统应用 5.3 文件系统的 Slice 定义 5.4 完整的定义 51 53 53 53 54 57 59 62 63 70 92 106 107 109 110 111 112 113 117 118 119 127 137 137 137 138 140
Contents 第 6 章 第 7 章 第 8 章 客户端的 Slice-to-C++ 映射 6.1 本章综述 6.2 引言 6.3 标识符的映射 6.4 模块的映射 6.5 Ice 名字空间 6.6 简单内建类型的映射 6.7 用户定义类型的映射 6.8 常量的映射 6.9 异常的映射 6.10 运行时异常的映射 6.11 接口的映射 6.12 操作的映射 6.13 异常处理 6.14 类的映射 6.15 6.16 与 CORBA C++ 映射比较 slice2cpp 命令行选项 开发 C++ 文件系统客户 7.1 本章综述 7.2 C++ 客户 7.3 总结 客户端的 Slice-to-Java 映射 8.1 本章综述 8.2 引言 8.3 标识符的映射 8.4 模块的映射 8.5 Ice Package 8.6 简单内建类型的映射 8.7 用户定义类型的映射 8.8 常量的映射 8.9 异常的映射 8.10 运行时异常的映射 8.11 接口的映射 8.12 操作的映射 8.13 异常处理 8.14 类的映射 8.15 8.16 Package slice2java 命令行选项 v 143 143 143 144 144 145 146 146 150 151 154 154 161 167 169 183 184 189 189 189 194 197 197 197 198 198 199 200 200 204 205 206 207 213 219 220 224 225
vi Contents 第 9 章 第 10 章 第 11 章 第 12 章 第 13 章 开发 Java 文件系统客户 9.1 本章综述 9.2 Java 客户 9.3 总结 服务器端的 Slice-to-C++ 映射 10.1 本章综述 10.2 引言 10.3 服务器端 main 函数 10.4 接口的映射 10.5 参数传递 10.6 引发异常 10.7 对象体现 10.8 总结 开发 C++ 文件系统服务器 11.1 本章综述 11.2 实现文件系统服务器 11.3 总结 服务器端的 Slice-to-Java 映射 12.1 Chapter Overview 12.2 引言 12.3 服务器端 main 函数 12.4 接口的映射 12.5 参数传递 12.6 引发异常 12.7 Tie 类 12.8 对象体现 12.9 总结 开发 Java 文件系统服务器 13.1 本章综述 13.2 实现文件系统服务器 13.3 总结 229 229 229 233 235 235 235 236 247 249 251 252 257 261 261 261 276 279 279 279 280 285 287 288 289 292 296 297 297 297 306
Contents 第 14 章 第 15 章 Ice 属性与配置 14.1 本章综述 14.2 属性 14.3 配置文件 14.4 在命令行上设置属性 14.5 Ice.Config 属性 14.6 命令行解析与初始化 14.7 Ice.ProgramName 属性 14.8 在程序中使用属性 14.9 总结 C++ 线程与并发 15.1 本章综述 15.2 引言 15.3 Ice 线程模型 15.4 线程库综述 15.5 互斥体 15.6 递归互斥体 15.7 读写递归互斥体 15.8 定时锁 15.9 监控器 15.10 线程 15.11 可移植的信号处理 15.12 总结 vii 307 307 307 309 309 310 311 312 313 323 325 325 325 326 326 327 332 335 338 341 350 357 358
viii 第三部分 高级 Ice Contents 363 第 16 章 第 17 章 第 18 章 第 19 章 Ice::Current 对象 Servant 定位器 Ice Run Time 详解 16.1 引言 16.2 通信器 16.3 对象适配器 16.4 对象标识 16.5 16.6 16.7 服务器实现技术 16.8 Ice::Context 16.9 调用超时 16.10 单向调用 16.11 数据报调用 16.12 成批的调用 16.13 测试代理的分派类型 16.14 Ice::Logger 接口 16.15 Ice::Stats 16.16 位置透明性 16.17 对比 Ice 与 CORBA Run Time 16.18 总结 异步程序设计 17.1 本章综述 17.2 引言 17.3 使用 AMI 17.4 使用 AMD 17.5 总结 Ice 协议 18.1 本章综述 18.2 数据编码 18.3 协议消息 18.4 压缩 18.5 协议和编码版本 18.6 与 IIOP 的对比 Ice 的 PHP 扩展 19.1 本章综述 19.2 引言 19.3 配置 19.4 客户端的 Slice-to-PHP 映射 365 365 365 369 375 376 377 391 413 418 419 423 424 426 426 428 429 430 432 443 443 443 446 452 459 463 463 463 486 494 496 498 511 511 511 513 515
分享到:
收藏