目录 1
第1部分 动因——构件与市场 1
第1章 引论 3
1.1 构件是为组装服务的 3
1.2 构件——定制软件与标准软件 4
1.3 构件技术的必然性 6
1.4 软件的本质与可部署实体 8
1.5 构件是部署单元 10
1.6 经验总结 12
第2章 市场和技术 17
2.1 创造市场 18
2.2 构件技术的基本特征 19
2.3 市场发展 20
2.3.1 Strategic Focus(1995年1月) 21
2.3.2 Ovum(1995年) 21
2.3.3 IDC(1996年5月) 22
2.3.4 Forrester的研究(1996年10月) 23
2.3.5 IDC(1999年4月) 23
2.3.6 ComponentSource(2001年) 24
2.3.7 Flashline(2001年) 25
第3章 标准 27
3.1 (准)标准的重要性 27
3.2 配线标准是不够的 29
3.3 太多竞争标准是无用的 30
3.4 今天的软件构件技术在哪里 31
3.5 下一步该如何走 32
第2部分 基础 35
第4章 构件的定义 37
4.1 术语与概念 37
4.1.1 构件 38
4.1.2 对象 39
4.1.3 构件与对象 39
4.1.4 模块 40
4.1.5 白盒抽象、黑盒抽象与重用 42
4.1.6 接口 43
4.1.7 显式语境依赖 45
4.1.8 构件的规模 46
4.2 标准化与规范化 47
4.2.1 通用市场与专业市场 47
4.2.2 标准的构件体系与规范化 48
第5章 构件、接口与重入 49
5.1 构件与接口 49
5.1.1 直接接口与间接接口 50
5.1.2 版本 52
5.1.3 作为合约的接口 52
5.1.4 合约与非功能性需求 53
5.1.5 未成文的“特征” 54
5.2 合约内容 54
5.2.1 安全与进度 54
5.2.3 指定时间与空间的需求 55
5.2.2 非功能性需求 55
5.3 形式化与非形式化 57
5.4 回调与合约 57
5.5 回调与合约:示例 59
5.5.1 目录服务 59
5.5.2 目录服务的客户 60
5.5.3 客户新版本 61
5.5.4 违约 64
5.5.5 防患于未然 64
5.5.6 修正目录服务 65
5.5.7 测试函数的应用 66
5.6 从回调到对象 67
5.7 从对象间的一致性到对象重入 74
5.8 自干涉与对象重入:总结 77
5.9 进程与多线程 78
5.10 历史记录 79
5.11 规约声明 80
第6章 多态性 83
6.1 可替代性 83
6.2 类型、子类型和类型检查 88
6.3 子类型 90
6.4 对象语言与类型 93
6.5 类型、接口与构件 93
6.6 独立可扩展性范型 95
6.7 构造安全性——构件的生存力 98
6.7.1 模块安全性 99
6.7.2 模块安全性与元编程 99
6.7.3 多语言环境下的安全性 100
6.8 安全性、安全和信任 101
6.9 独立可扩展性的维度 102
6.9.1 瓶颈接口 102
6.9.2 单独配置 103
6.9.3 并行扩展、正交扩展与递归扩展 103
6.10 接口和合约的演化与不变性 104
6.10.1 合约的语法与语义变化 104
6.10.2 合约的有效期 105
6.10.3 最高法则 106
6.11 多态性的其他形式 106
第7章 对象与类组装或怎样避免继承 109
7.1 继承——今天的汤 109
7.2 在汤中加更多的香料 110
7.2.1 多继承 110
7.2.2 Mixins 112
7.3 回到基本因素 114
7.4 脆弱基类问题 115
7.4.1 语法脆弱基类问题 115
7.4.2 语义脆弱基类问题 116
7.5 继承——更深入的问题 117
7.6 受约束的继承方法 122
7.6.1 特化接口 122
7.6.2 类型化特化接口 123
7.6.3 特化接口的行为规约 124
7.6.4 重用合约和合作合约 127
7.6.5 表示不变式和方法精化 130
7.6.6 避免脆弱基类问题的受约束继承 130
7.6.7 创建正确的子类且不必关心超类代码 130
7.7 从类到对象组装 132
7.8 转发与代理 135
7.9 对代理与继承的简单回顾 136
第8章 构件的规模与粒度 139
8.1 抽象单元 139
8.2 计费单元 140
8.4 编译单元 141
8.3 分析单元 141
8.5 分发单元 142
8.6 部署单元 143
8.7 争论单元 143
8.8 扩展单元 144
8.9 错误包容单元 145
8.10 实例单元 146
8.11 安装单元 146
8.12 加载单元 147
8.13 局部化单元 148
8.15 系统管理单元 149
8.16 小结 149
8.14 维护单元 149
第9章 模式、框架和体系结构 151
9.1 设计级重用的形式 151
9.1.1 共享一致性——编程语言 152
9.1.2 共享具体的解决片段——库 153
9.1.3 共享单个的合约——接口 154
9.1.4 共享单个的交互片断——消息和协议 154
9.1.5 共享单个的交互结构——模式 156
9.1.6 共享体系结构——框架 158
9.1.7 共享总体结构——系统体系结构 161
9.1.8 由子系统组成的系统——框架级别 163
9.2 互操作性,遗产和再工程 165
第10章 编程 167
10.1 适合不同开发者的不同编程方法 167
10.2 为一个系统进行程序设计 170
10.3 面向连接的程序设计 170
10.4 面向连接的程序设计——更深一步的概念 173
10.5 事件和消息 179
10.5.1 消息语法和模式——XML 181
10.5.2 事件和调用 183
10.5.3 调用的语法和协议——SOAP 184
10.6 事件的顺序——因果条件、竞争条件和脉冲干扰 185
10.7 极度延迟绑定——分派接口和元编程 187
10.8 自由度——沙箱方法和静态安全方法 189
10.9 录制与脚本 190
第11章 其他的说法 193
11.1 Grady Booch(1987) 193
11.2 OscarNierstrasz和Dennis Tsichritzis(1992,1995) 193
11.3 Gio Wiederhold,Peter Wegner和Stefano Ceri (1992) 194
11.4 Ivar Jacobson(1993) 194
11.5 Meta Group(1994) 195
11.6 Jed Harris(1995) 195
11.7 Ovum关于分布式对象的报告(1995) 195
11.8 Robert Orfali,Dan Harkey和Jeri Edwards(1995,1996) 196
11.9 Johannes Sametinger(1997) 197
11.10 UML 1.3 Standard(1999) 197
11.11 Desmond D Souza和Alan Wills(1999) 198
11.12 KrzysztofCzarnecki和UlrichEisenecker(2000) 198
11.13 Peter Herzum和Oliver Sims (2000) 199
11.14 CBSE手册(2001) 201
第3部分 构件模型与平台 203
第12章 对象和构件的“布线”标准 205
12.1 布线标准从何而来 205
12.2 从过程到对象 207
12.3 深层次问题 208
12.3.1 接口和对象引用规范 208
12.3.2 接口关系和多态性 209
12.3.3 命名和定位服务 209
12.3.4 复合文档 210
12.4 XML 212
12.4.1 XML、XML名字空间、XML方案 213
12.4.2 XML支持标准 218
12.4.3 XML文档对象和流模型 219
12.4.4 SOAP 220
12.4.5 XML Web服务:WSDL,UDDI,WSFL,XLANG 222
12.4.6 Web服务和编程模型 228
12.5 走哪一条路 229
第13章 OMG方式:CORBA,CCM,OMA和MDA 231
13.1 核心——对象请求代理 231
13.1.1 从CORBA到OMA 235
13.1.2 CORBA版本一览 236
13.1.3 系统对象模型(SOM)简介 238
13.2 公共对象服务规范(CORBA服务) 239
13.2.1 支持企业分布式计算的服务 239
13.2.2 支持细粒度对象互操作的服务 241
13.3 CORBA构件模型 245
13.3.1 可移植对象适配器 246
13.3.2 CCM构件 247
13.3.3 CCM容器 250
13.4 与CORBA兼容的实现 250
13.4.1 BEA的WebLogic 251
13.4.2 IBM的WebSphere 252
13.4.3 IONA公司的Orbix E2A应用服务器平台 253
13.4.4 Borland公司的企业服务器 253
13.4.5 非营利的实现 254
13.6 应用对象 255
13.5 CORBA设施 255
13.7 CORBA,UML,XML和MDA 256
13.7.1 元对象设施 257
13.7.2 模型驱动的体系结构(MDA) 257
第14章 SUN公司的方式——Java,Javabean,EJB和Java 2 259
14.1 Java构件技术的概述与历史 259
14.1.1 Java与Java 2 260
14.1.2 运行环境和参考实现 261
14.1.3 版本家族——微型版、标准版和企业版 263
14.2 Java语言 268
14.2.1 接口和类 271
14.2.2 异常和异常处理 276
14.2.3 线程和同步 277
14.2.4 垃圾回收 281
14.3 JavaBean 283
14.3.1 事件和连接 284
14.3.2 属性 286
14.3.3 自省 288
14.3.4 JAR文件——Java构件的打包文件 291
14.4 基本的Java服务 292
14.4.1 反射 292
14.4.2 对象序列化 296
14.4.3 Java本地接口 297
14.4.4 JavaAWT和JFC/Swing 299
14.4.5 高级JavaBean规范 300
14.5 各种构件——Applet,Servlet,Bean和Enterprise Bean 302
14.5.1 Java ServerPage(JSP)和Servlet 304
14.5.2 语境相关组装——EJB 307
14.5.3 数据驱动组装——EJB 2.0 中的消息驱动Bean 315
14.6 高级Java服务 316
14.6.1 分布式对象模型和RMI 316
14.6.2 Java和CORBA 318
14.6.3 企业级服务接口 319
14.6.4 Java和XML 322
14.7 重新比较Java中的接口和类 323
14.8.1 Jini——Java服务和客户的联合体 324
14.8 JXTA和Jini 324
14.8.2 JXTA——点对点计算 325
14.9 Java和Web服务——SunONE 327
第15章 微软的方式:COM,OLE/Activex,COM+和.NET CLR 329
15.1 第一个基础关联模型——COM 330
15.2 COM对象重用 334
15.3 接口和多态 337
15.3.1 类别 338
15.3.2 接口和版本化 339
15.4 COM对象的创建和COM库 339
15.5 初始化对象、持久化、结构化存储、绰号(moniker) 341
15.6 从COM到分布式COM(DCOM) 343
15.7 元信息和自动化 344
15.8 其他COM服务 345
15.8.1 统一数据传输 345
15.8.2 分派接口和双接口 346
15.8.3 外出接口和可连接对象 347
15.9 复合文档和OLE 348
15.9.1 OLE容器和服务器 349
15.9.2 控件——从Visual Basic到OLE再到ActiveX 350
15.10 依赖语境的组装和服务 352
15.10.1 COM套间——线程和同步 352
15.10.2 微软事务服务器——语境和激活 353
15.10.3 COM+—通用化语境和数据驱动的组装 354
15.11 二者兼取——.NET框架 356
15.11.1 .NET大图景 356
15.11.2 通用语言基础设施 357
15.11.3 COM和平台的互操作 360
15.11.4 示范型.NET语言——C# 360
15.11.5 Visual Studio.NET 364
15.12 配件——.NET软件构件 364
15.13 通用语言框架 366
15.13.1 应用域、语境、反射及远程化 370
15.13.2 Windows Forms,data,management 373
15.13.3 Web Forms,Active ServerPages(ASP).NET 374
15.13.4 XML和数据 376
15.13.5 Enterprise services 376
15.13.6 用.NET的Web Services 377
第16章 进一步的技术 379
16.1 计算机界优异的程序设计语言扩充 379
16.2 日立的应用库 380
16.3 Groove收发器 380
第17章 战略上的比较 383
17.1 共性 383
17.2 不同点 384
17.3 为基础设施厂商做出的推论 388
17.4 为构件厂商所做的推断 393
第18章 领域标准方面的努力 395
18.1 OMG领域技术委员会 395
18.1.1 OMG商业对象领域工作组 396
18.2 W3C 396
18.3.1 OASIS和ebXML 397
18.3 商业过程和文档 397
18.3.2 RosettaNet和PIPs 398
18.3.3 BizTalk.org 399
18.4 DMTF的CIM和WBEM 400
18.5 Java范围内制定标准的工作 401
18.6 过程控制的OLE 402
18.7 工业协会 402
18.7.1 信息技术工业分组 402
18.7.2 商业协会 403
18.7.3 用户协会 403
第19章 当前值得关注的问题 405
19.1 领域标准 405
19.3 那么它是面向对象的吗 406
19.2 软件工程基础的再思考 406
19.4 对象的迁移性和可移动代理 409
19.5 基础——更好的合约,更好的构件 410
第4部分 构件结合体系结构和进程 413
第20章 构件体系结构 415
20.1 体系结构的角色 415
20.2 概念化——超越对象 416
20.3 关键术语的定义 417
20.4 分层的构件体系结构 418
20.5 构件和中间件 420
20.6 构件与生成式编程 421
第21章 构件框架 423
21.1 语境相关构件框架的贡献 424
21.1.1 基础与根源 424
21.1.2 语境相关的构件框架与连接子(Connector) 426
21.1.3 语境相关的构件框架与元编程 427
21.1.4 语境相关的构件框架与面向侧面的编程 428
21.2 语境相关组合框架 429
21.2.1 COM+语境 429
21.2.2 EJB容器 430
21.2.3 CCM容器 431
21.2.4 CLR语境和通道 431
21.2.5 元组和对象空间 433
21.3 黑盒构件框架 434
21.3.1 Carrier-rider-mapper设计模式 435
21.3.2 目录对象 437
21.3.3 层次模型视图分隔 439
21.3.4 容器状态 441
21.3.5 串联的消息多播服务 443
21.3.6 基于复合文档的高级应用 446
21.4 黑盒和OLE 448
21.5 Portos——一个硬实时构件框架及其IDE 449
21.5.1 Portos的结构 450
21.5.2 实时调度程序 452
21.5.3 交叉开发环境 454
第22章 构件开发 455
22.1 面向构件的编程方法学 455
22.1.1 异步问题 456
22.1.2 多线程 456
22.1.3 从电路设计中获得的经验 457
22.1.4 “生活”在没有实现继承的状态下 458
22.1.5 坚壳类 459
22.1.6 语言支持 459
22.1.7 转发语义的动态基对象 460
22.1.8 调用者封装 462
22.2 环境——选择目标框架 465
22.3 工具——选择编程语言 465
第23章 构件的分发和获取 467
23.1 构建能出售的——应用程序而不是构件 467
23.2 产品目录和描述 468
23.3 构件定位和选择 469
23.4 超级分发 470
23.5 中介 471
第24章 构件组装 473
24.1 构件初始化及互连 473
24.2 构件的可视化组装 474
24.3 用复合文档取代可视化组装 474
24.4 非图形用户界面环境的构件 475
24.5 可管理且“自引导的”构件组装 476
24.6 最终用户组装 477
24.7 构件演化 477
第25章 技术发展趋向 481
25.1 高级的对象组装 481
25.1.1 委托 481
25.1.2 分割对象 482
25.1.3 环境型获取 483
25.1.4 动态继承 483
25.2 对象和构件的抽象的新形式 483
25.2.1 面向主题的编程 484
25.2.2 面向侧面的编程 484
25.2.3 XML构件 485
第5部分 市场与构件 487
第26章 市场全接触 489
26.1 构件 489
26.2 构件平台和基础设施 489
26.3 工具 490
26.3.1 构件设计与实现工具 490
26.3.2 构件测试工具 491
26.3.3 构件组装工具 491
26.3.4 构件系统的诊断和维护 492
26.4 专业性服务 492
26.4.1 构件系统及框架的架构师 492
26.4.2 构件组装顾问 492
26.4.3 构件配置管理 493
26.4.4 构件库、市场与咨询 493
26.4.5 构件操作者、Web服务、应用服务器提供商 494
第27章 新职业 495
27.1 构件系统架构师 495
27.2 构件框架架构师 496
27.3 构件开发者 496
27.4 构件组装者 497
第28章 构件市场悖论 499
28.1 品牌化 500
28.2 为每次使用付费 500
28.3 和广告联合发布 503
28.4 对新兴市场的利用 504
28.5 综合力量的作用 505
附录A Java、C#与component Pascal的对比 507
词汇表 513
后记 541
· · · · · · (
收起)
还没人写过短评呢