譯者序
前 言
第一部分 目標架構
第1章 實現麵嚮服務的架構 2
1.1 麵嚮服務的架構概覽 2
1.2 理解標準化服務約定 3
1.3 理解耦閤 8
1.4 理解服務抽象 10
1.5 設計可復用服務 13
1.6 理解服務自治和服務組閤 13
1.7 理解服務的無狀態性 13
1.8 一個服務示例 18
1.9 總結 19
第2章 理解應用程序架構 20
2.1 使用架構模式 20
2.2 架構模式概覽 20
2.3 MVP、MVC和MVVM的區彆 21
2.3.1 模型訪問 22
2.3.2 視圖模型 23
2.4 處理UI事件 28
2.5 模式如何工作 32
2.6 應該選擇哪種模式 33
2.7 總結 34
第3章 單元測試 35
3.1 一個單元測試示例 35
3.2 創建單元測試 36
3.3 編寫測試 38
3.4 檢測異常 43
3.5 理解Assert的強大 46
3.6 單元測試與集成測試比較 46
3.7 使用InternalsVisibleTo屬性 46
3.8 理解測試驅動開發 48
3.9 瞭解單元測試的更多內容 49
3.10 總結 49
第4章 理解依賴倒置原則 50
4.1 理解緊耦閤 50
4.2 實現抽象工廠模式 56
4.3 引入接口 59
4.4 創建單元測試 62
4.5 理解服務定位 63
4.5.1 控製反轉容器 63
4.5.2 服務定位器 66
4.5.3 一個真實的示例 68
4.5.4 按需服務屬性 72
4.5.5 單元測試的優點 75
4.5.6 最後調整 75
4.6 使用依賴注入 78
4.7 為什麼服務定位對再工程來說更好 82
4.8 總結 86
第5章 對單元測試使用測試替身 87
5.1 測試替身如何工作 87
5.2 測試替身可以滿足什麼需要 87
5.3 創建存根 90
5.4 創建模擬 94
5.4.1 第二個模擬示例 97
5.4.2 第三個模擬示例 98
5.5 使用模擬係統服務 99
5.6 瞭解測試替身的更多內容 101
5.7 總結 101
第二部分 再工程
第6章 迴顧最初的解決方案 104
6.1 分析代碼 104
6.1.1 基礎架構 105
6.1.2 代碼結構 105
6.1.3 數據庫訪問 106
6.1.4 數據結構 106
6.1.5 外部接口 106
6.1.6 應用程序控件與窗體控件 107
6.2 分析一般代碼結構 107
6.3 管理語言遷移 108
6.4 刪除死代碼 108
6.5 使用全局變量 109
6.6 適度代碼轉換 111
6.7 使用自動化代碼轉換實用工具 112
6.8 使用數據訪問技術 113
6.8.1 偵測數據模型 113
6.8.2 偵測數據訪問模式 115
6.9 總結 115
第7章 項目規劃 116
7.1 管理期望 116
7.2 創建再工程團隊 116
7.3 識彆開發工具和生成過程 117
7.3.1 引入源代碼管理 117
7.3.2 引入缺陷跟蹤 118
7.3.3 安裝和使用持續集成服務器 118
7.4 清理舊版解決方案 119
7.5 建立基礎 119
7.6 重構以使用基本服務 120
7.7 重構以使用高級服務 121
7.8 嚮利益相關者報告進展情況 121
7.9 管理溝通和培訓 122
7.10 總結 122
第8章 識彆開發工具和生成過程 123
8.1 使用源代碼管理 123
8.1.1 源代碼管理的類型 123
8.1.2 第一個流程示例:使用分布式係統 124
8.1.3 第二個流程示例:使用分布式係統 125
8.1.4 第三個流程示例:使用集中式係統 125
8.2 理解集中式係統和分布式係統的優缺點 125
8.2.1 使用彆人的共享代碼 126
8.2.2 與彆人共享代碼並審查更改 126
8.2.3 備份代碼 126
8.2.4 管理簽入頻率 126
8.2.5 管理閤並衝突 127
8.2.6 管理控製 127
8.2.7 優缺點的最後說明 127
8.3 評估主機托管服務 127
8.3.1 使用Apache Subversion 128
8.3.2 使用微軟的團隊基礎服務器 128
8.3.3 使用Git 129
8.4 管理功能和缺陷 129
8.4.1 管理自定義工作流 129
8.4.2 管理敏捷開發 130
8.4.3 管理報告 130
8.5 使用持續集成服務器和生成服務器 130
8.6 使用Visual Studio 2010開發工具 131
8.6.1 Visual Studio的重構工具 131
8.6.2 第三方重構工具 132
8.7 總結 133
第9章 清理舊版解決方案 134
9.1 組織文件係統 134
9.2 項目結構化 135
9.3 確定項目類彆 136
9.4 理解項目類型 137
9.4.1 應用程序無關項目 137
9.4.2 通用UI項目 137
9.4.3 模型無關項目 138
9.4.4 模型特定項目 138
9.5 再工程項目建議 138
9.5.1 常量 138
9.5.2 數據傳輸對象項目 139
9.5.3 接口 140
9.5.4 服務 140
9.5.5 域模型項目 141
9.5.6 Repository項目 141
9.5.7 控製器、視圖模型和錶示器 142
9.6 重構解決方案結構 142
9.6.1 去除不必要的Using語句 142
9.6.2 分離單元測試和集成測試 143
9.6.3 將類移動到閤適的項目 143
9.6.4 將快捷方式移動到庫 144
9.7 影響邏輯的重構 144
9.7.1 將初始化邏輯移動到構造器內 145
9.7.2 用衛語句代替嵌套的if語句 146
9.7.3 去除對實體類構造器的訪問 150
9.8 總結 150
第10章 建立基礎 151
10.1 添加新項目 151
10.2 使用Prism、Unity和Enterprise Library 版本 151
10.3 修改外殼程序 154
10.3.1 創建IBaseView 154
10.3.2 修改當前外殼程序 155
10.3.3 添加一個外殼程序控製器 156
10.4 創建服務定位器 157
10.5 建立Bootstrapper類 159
10.5.1 創建Winforms引導程序 159
10.5.2 更新Winforms Program類 161
10.5.3 創建一個WPF應用程序和引導程序 163
10.5.4 使用替代引導程序的配置 166
10.6 總結 168
第11章 服務的基本重構 169
11.1 使用DialogService 169
11.1.1 單元測試 173
11.1.2 重構DialogService 178
11.1.3 添加單元測試 179
11.2 使用LogWriterService 179
11.3 跟蹤會話信息 184
11.4 以SOA方式訪問資源 186
11.5 使用消息聚閤器 190
11.6 轉換靜態類 194
11.7 重構靜態類 194
11.8 總結 195
第12章 服務的高級重構 196
12.1 使用知識庫模式 196
12.1.1 用域模型創建知識庫 203
12.1.2 再工程知識庫的方法 207
12.1.3 轉換現有代碼以使用域模型 207
12.1.4 嚮域模型中添加數據驗證 208
12.1.5 再工程域模型以使用驗證 212
12.2 使用通用對象管理器 212
12.3 用命令調度服務簡化復雜代碼 217
12.4 總結 225
第13章 重構為控製器 226
13.1 使用舊版方法創建窗體 226
13.2 準備視圖 229
13.3 引入控製器 230
13.4 優化控製器 231
13.5 總結 233
附錄 用Visual Studio 2012 再工程.NET項目 234
· · · · · · (
收起)