第1部分 动因——构件与市场
第1章 引论
1.1 构件是为组装服务的
1.2 构件——定制软件与标准软件
1.3 构件技术的必然性
1.4 软件的本质与可部署实体
1.5 构件是部署单元
1.6 经验总结
第2章 市场和技术
2.1 创造市场
2.2 构件技术的基本特征
2.3 市场发展
2.3.1 Strategic Focus(1995年1月)
2.3.2 Ovum(1995年)
2.3.3 IDC(1996年5月)
2.3.4 Forrester的研究(1996年10月)
2.3.5 IDC(1999年4月)
2.3.6 ComponentSource(2001年)
2.3.7 Flashline (2001年)
第3章 标准
3.1 (准)标准的重要性
3.2 配线标准是不够的
3.3 太多竞争标准是无用的
3.4 今天的软件构件技术在哪里
3.5 下一步该如何走
第2部分 基础
第4章 构件的定义
4.1 术语与概念
4.1.1 构件
4.1.2 对象
4.1.3 构件与对象
4.1.4 模块
4.1.5 白盒抽象、黑盒抽象与重用
4.1.6 接口
4.1.7 显式语境依赖
4.1.8 构件的规模
4.2 标准化与规范化
4.2.1 通用市场与专业市场
4.2.2 标准的构件体系与规范化
第5章 构件、接口与重入
5.1 构件与接口
5.1.1 直接接口与间接接口
5.1.2 版本
5.1.3 作为合约的接口
5.1.4 合约与非功能性需求
5.1.5 未成文的“特征”
5.2 合约内容
5.2.1 安全与进度
5.2.2 非功能性需求
5.2.3 指定时间与空间的需求
5.3 形式化与非形式化
5.4 回调与合约
5.5 回调与合约:示例
5.5.1 目录服务
5.5.2 目录服务的客户
5.5.3 客户新版本
5.5.4 违约
5.5.5 防患于未然
5.5.6 修正目录服务
5.5.7 测试函数的应用
5.6 从回调到对象
5.7 从对象间的一致性到对象重入
5.8 自干涉与对象重入:总结
5.9 进程与多线程
5.10 历史记录
5.11 规约声明
第6章 多态性
6.1 可替代性
6.2 类型、子类型和类型检查
6.3 子类型
6.4 对象语言与类型
6.5 类型、接口与构件
6.6 独立可扩展性范型
6.7 构造安全性——构件的生存力
6.7.1 模块安全性
6.7.2 模块安全性与元编程
6.7.3 多语言环境下的安全性
6.8 安全性、安全和信任
6.9 独立可扩展性的维度
6.9.1 瓶颈接口
6.9.2 单独配置
6.9.3 并行扩展、正交扩展与递归扩展
6.10 接口和合约的演化与不变性
6.10.1 合约的语法与语义变化
6.10.2 合约的有效期
6.10.3 最高法则
6.11 多态性的其他形式
第7章 对象与类组装或怎样避免继承
7.1 继承——今天的汤
7.2 在汤中加更多的香料
7.2.1 多继承
7.2.2 Mixins
7.3 回到基本因素
7.4 脆弱基类问题
7.4.1 语法脆弱基类问题
7.4.2 语义脆弱基类问题
7.5 继承——更深入的问题
7.6 受约束的继承方法
7.6.1 特化接口
7.6.2 类型化特化接口
7.6.3 特化接口的行为规约
7.6.4 重用合约和合作合约
7.6.5 表示不变式和方法精化
7.6.6 避免脆弱基类问题的受约束继承
7.6.7 创建正确的子类且不必关心超类代码
7.7 从类到对象组装
7.8 转发与代理
7.9 对代理与继承的简单回顾
第8章 构件的规模与粒度
8.1 抽象单元
8.2 计费单元
8.3 分析单元
8.4 编译单元
8.5 分发单元
8.6 部署单元
8.7 争论单元
8.8 扩展单元
8.9 错误包容单元
8.10 实例单元
8.11 安装单元
8.12 加载单元
8.13 局部化单元
8.14 维护单元
8.15 系统管理单元
8.16 小结
第9章 模式、框架和体系结构
9.1 设计级重用的形式
9.1.1 共享一致性——编程语言
9.1.2 共享具体的解决片段——库
9.1.3 共享单个的合约——接口
9.1.4 共享单个的交互片断——消息和协议
9.1.5 共享单个的交互结构——模式
9.1.6 共享体系结构——框架
9.1.7 共享总体结构——系统体系结构
9.1.8 由子系统组成的系统——框架级别
9.2 互操作性,遗产和再工程
第10章 编程
10.1 适合不同开发者的不同编程方法
10.2 为一个系统进行程序设计
10.3 面向连接的程序设计
10.4 面向连接的程序设计——更深一步的概念
10.5 事件和消息
10.5.1 消息语法和模式——XML
10.5.2 事件和调用
10.5.3 调用的语法和协议——SOAP
10.6 事件的顺序——因果条件、竞争条件和脉冲干扰
10.7 极度延迟绑定——分派接口和元编程
10.8 自由度——沙箱方法和静态安全方法
10.9 录制与脚本
第11章 其他的说法
11.1 Grady Booch (1987)
11.2 Oscar Nierstrasz和Dennis Tsichritzis(1992, 1995)
11.3 Gio Wiederhold, Peter Wegner和Stefano Ceri (1992)
11.4 Ivar Jacobson (1993)
11.5 Meta Group (1994)
11.6 Jed Harris(1995)
11.7 Ovum关于分布式对象的报告(1995)
11.8 Robert Orfali, Dan Harkey和Jeri Edwards (1995, 1996)
11.9 Johannes Sametinger(1997)
11.10 UML 1.3 Standard(1999)
11.11 Desmond D’Souza和Alan Wills (1999)
11.12 Krzysztof Czarnecki和Ulrich Eisenecker(2000)
11.13 Peter Herzum和Oliver Sims (2000)
11.14 CBSE手册(2001)
第3部分 构件模型与平台
第12章 对象和构件的“布线”标准
12.1 布线标准从何而来
12.2 从过程到对象
12.3 深层次问题
12.3.1 接口和对象引用规范
12.3.2 接口关系和多态性
12.3.3 命名和定位服务
12.3.4 复合文档
12.4 XML
12.4.1 XML、XML名字空间、XML方案
12.4.2 XML支持标准
12.4.3 XML文档对象和流模型
12.4.4 SOAP
12.4.5 XML Web服务:WSDL,UDDI,WSFL,XLANG
12.4.6 Web服务和编程模型
12.5 走哪一条路
第13章 OMG方式:CORBA, CCM, OMA 和MDA
13.1 核心——对象请求代理
13.1.1 从CORBA到OMA
13.1.2 CORBA 版本一览
13.1.3 系统对象模型(SOM)简介
13.2 公共对象服务规范(CORBA服务)
13.2.1 支持企业分布式计算的服务
13.2.2 支持细粒度对象互操作的服务
13.3 CORBA构件模型
13.3.1 可移植对象适配器
13.3.2 CCM构件
13.3.3 CCM容器
13.4 与CORBA兼容的实现
13.4.1 BEA的WebLogic
13.4.2 IBM的WebSphere
13.4.3 IONA公司的Orbix E2A应用服务器平台
13.4.4 Borland公司的企业服务器
13.4.5 非营利的实现
13.5 CORBA设施
13.6 应用对象
13.7 CORBA,UML,XML和MDA
13.7.1 元对象设施
13.7.2 模型驱动的体系结构(MDA)
第14章 SUN公司的方式——Java, Javabean,EJB和Java 2
14.1 Java构件技术的概述与历史
14.1.1 Java与Java 2
14.1.2 运行环境和参考实现
14.1.3 版本家族——微型版、标准版和企业版
14.2 Java语言
14.2.1 接口和类
14.2.2 异常和异常处理
14.2.3 线程和同步
14.2.4 垃圾回收
14.3 JavaBean
14.3.1 事件和连接
14.3.2 属性
14.3.3 自省
14.3.4 JAR文件——Java构件的打包文件
14.4 基本的Java服务
14.4.1 反射
14.4.2 对象序列化
14.4.3 Java本地接口
14.4.4 Java AWT和JFC/Swing
14.4.5 高级JavaBean规范
14.5 各种构件——Applet,Servlet,Bean和Enterprise Bean
14.5.1 Java Server Page(JSP)和Servlet
14.5.2 语境相关组装——EJB
14.5.3 数据驱动组装——EJB 2.0中的消息驱动Bean
14.6 高级Java服务
14.6.1 分布式对象模型和RMI
14.6.2 Java和CORBA
14.6.3 企业级服务接口
14.6.4 Java和XML
14.7 重新比较Java中的接口和类
14.8 JXTA和Jini
14.8.1 Jini——Java服务和客户的联合体
14.8.2 JXTA——点对点计算
14.9 Java和Web服务——SunONE
第15章 微软的方式:COM, OLE/Activex, COM+和.NET CLR
15.1 第一个基础关联模型——COM
15.2 COM对象重用
15.3 接口和多态
15.3.1 类别
15.3.2 接口和版本化
15.4 COM对象的创建和COM库
15.5 初始化对象、持久化、结构化存储、绰号(moniker)
15.6 从COM到分布式COM(DCOM)
15.7 元信息和自动化
15.8 其他COM服务
15.8.1 统一数据传输
15.8.2 分派接口和双接口
15.8.3 外出接口和可连接对象
15.9 复合文档和OLE
15.9.1 OLE容器和服务器
15.9.2 控件——从Visual Basic到OLE再到ActiveX
15.10 依赖语境的组装和服务
15.10.1 COM套间——线程和同步
15.10.2 微软事务服务器——语境和激活
15.10.3 COM+——通用化语境和数据驱动的组装
15.11 二者兼取——.NET框架
15.11.1 .NET大图景
15.11.2 通用语言基础设施
15.11.3 COM和平台的互操作
15.11.4 示范型.NET语言——C#
15.11.5 Visual Studio .NET
15.12 配件——.NET软件构件
15.13 通用语言框架
15.13.1 应用域、语境、反射及远程化
15.13.2 Windows Forms, data, management
15.13.3 Web Forms, Active Server Pages (ASP) .NET
15.13.4 XML和数据
15.13.5 Enterprise services
15.13.6 用 .NET的Web Services
第16章 进一步的技术
16.1 计算机界优异的程序设计语言扩充
16.2 日立的应用库
16.3 Groove收发器
第17章 战略上的比较
17.1 共性
17.2 不同点
17.3 为基础设施厂商做出的推论
17.4 为构件厂商所做的推断
第18章 领域标准方面的努力
18.1 OMG领域技术委员会
18.1.1 OMG商业对象领域工作组
18.2 W3C
18.3 商业过程和文档
18.3.1 OASIS和ebXML
18.3.2 RosettaNet和PIPs
18.3.3 BizTalk.org
18.4 DMTF的CIM和WBEM
18.5 Java范围内制定标准的工作
18.6 过程控制的OLE
18.7 工业协会
18.7.1 信息技术工业分组
18.7.2 商业协会
18.7.3 用户协会
第19章 当前值得关注的问题
19.1 领域标准
19.2 软件工程基础的再思考
19.3 那么它是面向对象的吗
19.4 对象的迁移性和可移动代理
19.5 基础——更好的合约,更好的构件
第4部分 构件结合体系结构和进程
第20章 构件体系结构
20.1 体系结构的角色
20.2 概念化——超越对象
20.3 关键术语的定义
20.4 分层的构件体系结构
20.5 构件和中间件
20.6 构件与生成式编程
第21章 构件框架
21.1 语境相关构件框架的贡献
21.1.1 基础与根源
21.1.2 语境相关的构件框架与连接子(Connector)
21.1.3 语境相关的构件框架与元编程
21.1.4 语境相关的构件框架与面向侧面的编程
21.2 语境相关组合框架
21.2.1 COM+语境
21.2.2 EJB容器
21.2.3 CCM容器
21.2.4 CLR语境和通道
21.2.5 元组和对象空间
21.3 黑盒构件框架
21.3.1 Carrier-rider-mapper设计模式
21.3.2 目录对象
21.3.3 层次模型视图分隔
21.3.4 容器状态
21.3.5 串联的消息多播服务
21.3.6 基于复合文档的高级应用
21.4 黑盒和OLE
21.5 Portos——一个硬实时构件框架及其IDE
21.5.1 Portos的结构
21.5.2 实时调度程序
21.5.3 交叉开发环境
第22章 构件开发
22.1 面向构件的编程方法学
22.1.1 异步问题
22.1.2 多线程
22.1.3 从电路设计中获得的经验
22.1.4 “生活”在没有实现继承的状态下
22.1.5 坚壳类
22.1.6 语言支持
22.1.7 转发语义的动态基对象
22.1.8 调用者封装
22.2 环境——选择目标框架
22.3 工具——选择编程语言
第23章 构件的分发和获取
23.1 构建能出售的——应用程序而不是构件
23.2 产品目录和描述
23.3 构件定位和选择
23.4 超级分发
23.5 中介
第24章 构件组装
24.1 构件初始化及互连
24.2 构件的可视化组装
24.3 用复合文档取代可视化组装
24.4 非图形用户界面环境的构件
24.5 可管理且“自引导的”构件组装
24.6 最终用户组装
24.7 构件演化
第25章 技术发展趋向
25.1 高级的对象组装
25.1.1 委托
25.1.2 分割对象
25.1.3 环境型获取
25.1.4 动态继承
25.2 对象和构件的抽象的新形式
25.2.1 面向主题的编程
25.2.2 面向侧面的编程
25.2.3 XML构件
第5部分 市场与构件
第26章 市场全接触
26.1 构件
26.2 构件平台和基础设施
26.3 工具
26.3.1 构件设计与实现工具
26.3.2 构件测试工具
26.3.3 构件组装工具
26.3.4 构件系统的诊断和维护
26.4 专业性服务
26.4.1 构件系统及框架的架构师
26.4.2 构件组装顾问
26.4.3 构件配置管理
26.4.4 构件库、市场与咨询
26.4.5 构件操作者、Web服务、应用服务器提供商
第27章 新职业
27.1 构件系统架构师
27.2 构件框架架构师
27.3 构件开发者
27.4 构件组装者
第28章 构件市场悖论
28.1 品牌化
28.2 为每次使用付费
28.3 和广告联合发布
28.4 对新兴市场的利用
28.5 综合力量的作用
附录A Java、C#与component Pascal的对比
词汇表
后记