第1部分 動因——構(gòu)件與市場
第1章 引論
1.1 構(gòu)件是為組裝服務(wù)的
1.2 構(gòu)件——定制軟件與標準軟件
1.3 構(gòu)件技術(shù)的必然性
1.4 軟件的本質(zhì)與可部署實體
1.5 構(gòu)件是部署單元
1.6 經(jīng)驗總結(jié)
第2章 市場和技術(shù)
2.1 創(chuàng)造市場
2.2 構(gòu)件技術(shù)的基本特征
2.3 市場發(fā)展
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 今天的軟件構(gòu)件技術(shù)在哪里
3.5 下一步該如何走
第2部分 基礎(chǔ)
第4章 構(gòu)件的定義
4.1 術(shù)語與概念
4.1.1 構(gòu)件
4.1.2 對象
4.1.3 構(gòu)件與對象
4.1.4 模塊
4.1.5 白盒抽象、黑盒抽象與重用
4.1.6 接口
4.1.7 顯式語境依賴
4.1.8 構(gòu)件的規(guī)模
4.2 標準化與規(guī)范化
4.2.1 通用市場與專業(yè)市場
4.2.2 標準的構(gòu)件體系與規(guī)范化
第5章 構(gòu)件、接口與重入
5.1 構(gòu)件與接口
5.1.1 直接接口與間接接口
5.1.2 版本
5.1.3 作為合約的接口
5.1.4 合約與非功能性需求
5.1.5 未成文的“特征”
5.2 合約內(nèi)容
5.2.1 安全與進度
5.2.2 非功能性需求
5.2.3 指定時間與空間的需求
5.3 形式化與非形式化
5.4 回調(diào)與合約
5.5 回調(diào)與合約:示例
5.5.1 目錄服務(wù)
5.5.2 目錄服務(wù)的客戶
5.5.3 客戶新版本
5.5.4 違約
5.5.5 防患于未然
5.5.6 修正目錄服務(wù)
5.5.7 測試函數(shù)的應(yīng)用
5.6 從回調(diào)到對象
5.7 從對象間的一致性到對象重入
5.8 自干涉與對象重入:總結(jié)
5.9 進程與多線程
5.10 歷史記錄
5.11 規(guī)約聲明
第6章 多態(tài)性
6.1 可替代性
6.2 類型、子類型和類型檢查
6.3 子類型
6.4 對象語言與類型
6.5 類型、接口與構(gòu)件
6.6 獨立可擴展性范型
6.7 構(gòu)造安全性——構(gòu)件的生存力
6.7.1 模塊安全性
6.7.2 模塊安全性與元編程
6.7.3 多語言環(huán)境下的安全性
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 多態(tài)性的其他形式
第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 特化接口的行為規(guī)約
7.6.4 重用合約和合作合約
7.6.5 表示不變式和方法精化
7.6.6 避免脆弱基類問題的受約束繼承
7.6.7 創(chuàng)建正確的子類且不必關(guān)心超類代碼
7.7 從類到對象組裝
7.8 轉(zhuǎn)發(fā)與代理
7.9 對代理與繼承的簡單回顧
第8章 構(gòu)件的規(guī)模與粒度
8.1 抽象單元
8.2 計費單元
8.3 分析單元
8.4 編譯單元
8.5 分發(fā)單元
8.6 部署單元
8.7 爭論單元
8.8 擴展單元
8.9 錯誤包容單元
8.10 實例單元
8.11 安裝單元
8.12 加載單元
8.13 局部化單元
8.14 維護單元
8.15 系統(tǒng)管理單元
8.16 小結(jié)
第9章 模式、框架和體系結(jié)構(gòu)
9.1 設(shè)計級重用的形式
9.1.1 共享一致性——編程語言
9.1.2 共享具體的解決片段——庫
9.1.3 共享單個的合約——接口
9.1.4 共享單個的交互片斷——消息和協(xié)議
9.1.5 共享單個的交互結(jié)構(gòu)——模式
9.1.6 共享體系結(jié)構(gòu)——框架
9.1.7 共享總體結(jié)構(gòu)——系統(tǒng)體系結(jié)構(gòu)
9.1.8 由子系統(tǒng)組成的系統(tǒng)——框架級別
9.2 互操作性,遺產(chǎn)和再工程
第10章 編程
10.1 適合不同開發(fā)者的不同編程方法
10.2 為一個系統(tǒng)進行程序設(shè)計
10.3 面向連接的程序設(shè)計
10.4 面向連接的程序設(shè)計——更深一步的概念
10.5 事件和消息
10.5.1 消息語法和模式——XML
10.5.2 事件和調(diào)用
10.5.3 調(diào)用的語法和協(xié)議——SOAP
10.6 事件的順序——因果條件、競爭條件和脈沖干擾
10.7 極度延遲綁定——分派接口和元編程
10.8 自由度——沙箱方法和靜態(tài)安全方法
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關(guān)于分布式對象的報告(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部分 構(gòu)件模型與平臺
第12章 對象和構(gòu)件的“布線”標準
12.1 布線標準從何而來
12.2 從過程到對象
12.3 深層次問題
12.3.1 接口和對象引用規(guī)范
12.3.2 接口關(guān)系和多態(tài)性
12.3.3 命名和定位服務(wù)
12.3.4 復(fù)合文檔
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服務(wù):WSDL,UDDI,WSFL,XLANG
12.4.6 Web服務(wù)和編程模型
12.5 走哪一條路
第13章 OMG方式:CORBA, CCM, OMA 和MDA
13.1 核心——對象請求代理
13.1.1 從CORBA到OMA
13.1.2 CORBA 版本一覽
13.1.3 系統(tǒng)對象模型(SOM)簡介
13.2 公共對象服務(wù)規(guī)范(CORBA服務(wù))
13.2.1 支持企業(yè)分布式計算的服務(wù)
13.2.2 支持細粒度對象互操作的服務(wù)
13.3 CORBA構(gòu)件模型
13.3.1 可移植對象適配器
13.3.2 CCM構(gòu)件
13.3.3 CCM容器
13.4 與CORBA兼容的實現(xiàn)
13.4.1 BEA的WebLogic
13.4.2 IBM的WebSphere
13.4.3 IONA公司的Orbix E2A應(yīng)用服務(wù)器平臺
13.4.4 Borland公司的企業(yè)服務(wù)器
13.4.5 非營利的實現(xiàn)
13.5 CORBA設(shè)施
13.6 應(yīng)用對象
13.7 CORBA,UML,XML和MDA
13.7.1 元對象設(shè)施
13.7.2 模型驅(qū)動的體系結(jié)構(gòu)(MDA)
第14章 SUN公司的方式——Java, Javabean,EJB和Java 2
14.1 Java構(gòu)件技術(shù)的概述與歷史
14.1.1 Java與Java 2
14.1.2 運行環(huán)境和參考實現(xiàn)
14.1.3 版本家族——微型版、標準版和企業(yè)版
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構(gòu)件的打包文件
14.4 基本的Java服務(wù)
14.4.1 反射
14.4.2 對象序列化
14.4.3 Java本地接口
14.4.4 Java AWT和JFC/Swing
14.4.5 高級JavaBean規(guī)范
14.5 各種構(gòu)件——Applet,Servlet,Bean和Enterprise Bean
14.5.1 Java Server Page(JSP)和Servlet
14.5.2 語境相關(guān)組裝——EJB
14.5.3 數(shù)據(jù)驅(qū)動組裝——EJB 2.0中的消息驅(qū)動Bean
14.6 高級Java服務(wù)
14.6.1 分布式對象模型和RMI
14.6.2 Java和CORBA
14.6.3 企業(yè)級服務(wù)接口
14.6.4 Java和XML
14.7 重新比較Java中的接口和類
14.8 JXTA和Jini
14.8.1 Jini——Java服務(wù)和客戶的聯(lián)合體
14.8.2 JXTA——點對點計算
14.9 Java和Web服務(wù)——SunONE
第15章 微軟的方式:COM, OLE/Activex, COM+和.NET CLR
15.1 第一個基礎(chǔ)關(guān)聯(lián)模型——COM
15.2 COM對象重用
15.3 接口和多態(tài)
15.3.1 類別
15.3.2 接口和版本化
15.4 COM對象的創(chuàng)建和COM庫
15.5 初始化對象、持久化、結(jié)構(gòu)化存儲、綽號(moniker)
15.6 從COM到分布式COM(DCOM)
15.7 元信息和自動化
15.8 其他COM服務(wù)
15.8.1 統(tǒng)一數(shù)據(jù)傳輸
15.8.2 分派接口和雙接口
15.8.3 外出接口和可連接對象
15.9 復(fù)合文檔和OLE
15.9.1 OLE容器和服務(wù)器
15.9.2 控件——從Visual Basic到OLE再到ActiveX
15.10 依賴語境的組裝和服務(wù)
15.10.1 COM套間——線程和同步
15.10.2 微軟事務(wù)服務(wù)器——語境和激活
15.10.3 COM+——通用化語境和數(shù)據(jù)驅(qū)動的組裝
15.11 二者兼取——.NET框架
15.11.1 .NET大圖景
15.11.2 通用語言基礎(chǔ)設(shè)施
15.11.3 COM和平臺的互操作
15.11.4 示范型.NET語言——C#
15.11.5 Visual Studio .NET
15.12 配件——.NET軟件構(gòu)件
15.13 通用語言框架
15.13.1 應(yīng)用域、語境、反射及遠程化
15.13.2 Windows Forms, data, management
15.13.3 Web Forms, Active Server Pages (ASP) .NET
15.13.4 XML和數(shù)據(jù)
15.13.5 Enterprise services
15.13.6 用 .NET的Web Services
第16章 進一步的技術(shù)
16.1 計算機界優(yōu)異的程序設(shè)計語言擴充
16.2 日立的應(yīng)用庫
16.3 Groove收發(fā)器
第17章 戰(zhàn)略上的比較
17.1 共性
17.2 不同點
17.3 為基礎(chǔ)設(shè)施廠商做出的推論
17.4 為構(gòu)件廠商所做的推斷
第18章 領(lǐng)域標準方面的努力
18.1 OMG領(lǐng)域技術(shù)委員會
18.1.1 OMG商業(yè)對象領(lǐng)域工作組
18.2 W3C
18.3 商業(yè)過程和文檔
18.3.1 OASIS和ebXML
18.3.2 RosettaNet和PIPs
18.3.3 BizTalk.org
18.4 DMTF的CIM和WBEM
18.5 Java范圍內(nèi)制定標準的工作
18.6 過程控制的OLE
18.7 工業(yè)協(xié)會
18.7.1 信息技術(shù)工業(yè)分組
18.7.2 商業(yè)協(xié)會
18.7.3 用戶協(xié)會
第19章 當前值得關(guān)注的問題
19.1 領(lǐng)域標準
19.2 軟件工程基礎(chǔ)的再思考
19.3 那么它是面向?qū)ο蟮膯?br />19.4 對象的遷移性和可移動代理
19.5 基礎(chǔ)——更好的合約,更好的構(gòu)件
第4部分 構(gòu)件結(jié)合體系結(jié)構(gòu)和進程
第20章 構(gòu)件體系結(jié)構(gòu)
20.1 體系結(jié)構(gòu)的角色
20.2 概念化——超越對象
20.3 關(guān)鍵術(shù)語的定義
20.4 分層的構(gòu)件體系結(jié)構(gòu)
20.5 構(gòu)件和中間件
20.6 構(gòu)件與生成式編程
第21章 構(gòu)件框架
21.1 語境相關(guān)構(gòu)件框架的貢獻
21.1.1 基礎(chǔ)與根源
21.1.2 語境相關(guān)的構(gòu)件框架與連接子(Connector)
21.1.3 語境相關(guān)的構(gòu)件框架與元編程
21.1.4 語境相關(guān)的構(gòu)件框架與面向側(cè)面的編程
21.2 語境相關(guān)組合框架
21.2.1 COM+語境
21.2.2 EJB容器
21.2.3 CCM容器
21.2.4 CLR語境和通道
21.2.5 元組和對象空間
21.3 黑盒構(gòu)件框架
21.3.1 Carrier-rider-mapper設(shè)計模式
21.3.2 目錄對象
21.3.3 層次模型視圖分隔
21.3.4 容器狀態(tài)
21.3.5 串聯(lián)的消息多播服務(wù)
21.3.6 基于復(fù)合文檔的高級應(yīng)用
21.4 黑盒和OLE
21.5 Portos——一個硬實時構(gòu)件框架及其IDE
21.5.1 Portos的結(jié)構(gòu)
21.5.2 實時調(diào)度程序
21.5.3 交叉開發(fā)環(huán)境
第22章 構(gòu)件開發(fā)
22.1 面向構(gòu)件的編程方法學(xué)
22.1.1 異步問題
22.1.2 多線程
22.1.3 從電路設(shè)計中獲得的經(jīng)驗
22.1.4 “生活”在沒有實現(xiàn)繼承的狀態(tài)下
22.1.5 堅殼類
22.1.6 語言支持
22.1.7 轉(zhuǎn)發(fā)語義的動態(tài)基對象
22.1.8 調(diào)用者封裝
22.2 環(huán)境——選擇目標框架
22.3 工具——選擇編程語言
第23章 構(gòu)件的分發(fā)和獲取
23.1 構(gòu)建能出售的——應(yīng)用程序而不是構(gòu)件
23.2 產(chǎn)品目錄和描述
23.3 構(gòu)件定位和選擇
23.4 超級分發(fā)
23.5 中介
第24章 構(gòu)件組裝
24.1 構(gòu)件初始化及互連
24.2 構(gòu)件的可視化組裝
24.3 用復(fù)合文檔取代可視化組裝
24.4 非圖形用戶界面環(huán)境的構(gòu)件
24.5 可管理且“自引導(dǎo)的”構(gòu)件組裝
24.6 最終用戶組裝
24.7 構(gòu)件演化
第25章 技術(shù)發(fā)展趨向
25.1 高級的對象組裝
25.1.1 委托
25.1.2 分割對象
25.1.3 環(huán)境型獲取
25.1.4 動態(tài)繼承
25.2 對象和構(gòu)件的抽象的新形式
25.2.1 面向主題的編程
25.2.2 面向側(cè)面的編程
25.2.3 XML構(gòu)件
第5部分 市場與構(gòu)件
第26章 市場全接觸
26.1 構(gòu)件
26.2 構(gòu)件平臺和基礎(chǔ)設(shè)施
26.3 工具
26.3.1 構(gòu)件設(shè)計與實現(xiàn)工具
26.3.2 構(gòu)件測試工具
26.3.3 構(gòu)件組裝工具
26.3.4 構(gòu)件系統(tǒng)的診斷和維護
26.4 專業(yè)性服務(wù)
26.4.1 構(gòu)件系統(tǒng)及框架的架構(gòu)師
26.4.2 構(gòu)件組裝顧問
26.4.3 構(gòu)件配置管理
26.4.4 構(gòu)件庫、市場與咨詢
26.4.5 構(gòu)件操作者、Web服務(wù)、應(yīng)用服務(wù)器提供商
第27章 新職業(yè)
27.1 構(gòu)件系統(tǒng)架構(gòu)師
27.2 構(gòu)件框架架構(gòu)師
27.3 構(gòu)件開發(fā)者
27.4 構(gòu)件組裝者
第28章 構(gòu)件市場悖論
28.1 品牌化
28.2 為每次使用付費
28.3 和廣告聯(lián)合發(fā)布
28.4 對新興市場的利用
28.5 綜合力量的作用
附錄A Java、C#與component Pascal的對比
詞匯表
后記