Martin Fowler 的企業級軟體架構模式:軟體重構教父傳授 51個模式,活用設計思考與架構決策 (Patterns of Enterprise Application Architecture)
內容描述
★★★榮獲素有IT書籍奧斯卡金像獎之稱的第13屆Jolt獎★★★
✎與一群專家級貢獻者David Rice、Matthew Foemmel、Edward Hieatt、Robert Mee以及Randy Stafford共同合作,Martin Fowler之必讀經典✎
[名家名著] 25
Martin Fowler的企業級軟體架構模式
Patterns of Enterprise Application Architecture
陳傳興、張立顗 翻譯✍
黃忠成 審校✍
陳仕傑(91) 專文推薦✍
企業級軟體開發的實踐因許多新技術的出現而受惠。物件導向程式語言(如Java和.NET)與新工具和新技術的日趨普及,讓我們有能力建置更穩固與強健的應用程式,但它們並不容易實作。開發人員在企業級應用程式中總是會面臨相同的困境、遭遇同樣的難題,因為他們尚未充分領會到資深前輩們的架構經驗和失敗教訓。
本書介紹的,正是企業級軟體開發人員所面臨的種種嚴峻挑戰。企業級應用程式(如預約系統、供應鏈程式、金融系統等等)的挑戰是獨特的,與桌上型電腦系統和嵌入式系統同行所面臨的挑戰截然不同。因此,企業級開發人員往往必須自行挖掘解決方案。
本書作者Martin Fowler是全球知名的物件導向大師、軟體重構教父,他發現,儘管技術發生了變化──從Smalltalk到CORBA,再到Java與.NET──相同的基本設計概念仍然可以調整並應用來解決這些常見的問題。在一群專家級貢獻者的幫助下,Martin將40多種重複出現的解決方案淬鍊成為模式,並提供完整的脈絡,讓讀者能夠在面對困難的設計決策時做出正確的選擇,最終寫成這本不可或缺的解決方案手冊,它適用於任何的企業級軟體平台。
本書實際上是兩本書合二為一。第一個部分是開發企業級應用程式的簡單教學,讀者可以從頭到尾閱讀,以熟悉本書的範圍及章節安排。第二個部分則是本書的主軸,是關於模式本身的參考手冊,Martin為每一個模式都提供了用法和實作資訊,並搭配Java或C#程式碼的詳細範例。書中還利用豐富的UML圖形來進一步解釋這些概念。
你將從本書學會:
・將企業級應用程式劃分為多個分層
・組織商業邏輯的主要方法
・深入處理物件與關聯式資料庫之間的對應
・使用MVC模式來組織Web的呈現
・處理跨越多個交易的資料的並行問題
・設計分散式物件介面
・來自David Rice、Matthew Foemmel、Edward Hieatt、Robert Mee、Randy Stafford的專家級分享
目錄大綱
推薦序
審校序
譯者序
作者序
前言
Part I 敘述
Chapter 1 分層
1.1 企業應用程式中分層的演進
1.2 三個主要分層
1.3 選擇分層的運作地點
Chapter 2 組織領域邏輯
2.1 做出選擇
2.2 服務層
Chapter 3 對應至關聯式資料庫
3.1 架構模式
3.2 行為問題
3.3 讀取資料
3.4 結構對應模式
3.5 建構對應
3.6 使用中繼資料
3.7 資料庫連線
3.8 其他提醒
3.9 進一步閱讀
Chapter 4 Web 展示層
4.1 View 模式
4.2 Input Controller 模式
4.3 進一步閱讀
Chapter 5 並行
5.1 並行問題
5.2 執行脈絡
5.3 隔離與不可變性
5.4 樂觀並行控制與悲觀並行控制
5.5 交易
5.6 離線並行控制模式
5.7 應用伺服器並行
5.8 進一步閱讀
Chapter 6 工作階段狀態
6.1 無狀態的價值
6.2 工作階段狀態
6.3 儲存工作階段狀態的方法
Chapter 7 分散式策略
7.1 分散式物件的誘惑
7.2 遠端介面和本機介面
7.3 必須使用分散式處理的場景
7.4 關於分散式的界限
7.5 分散式的介面
Chapter 8 沙盤推演
8.1 從領域分層開始
8.2 深入到資料來源層
8.3 展示層
8.4 一些具體的技術建議
8.5 其他分層方式
Part II 模式
Chapter 9 領域邏輯模式
9.1 Transaction Script(交易指令碼)
9.2 Domain Model(領域模型)
9.3 Table Module(表格模組)
9.4 Service Layer(服務層)
Chapter 10 資料來源架構模式
10.1 Table Data Gateway(表格資料閘道)
10.2 Row Data Gateway(資料列資料閘道)
10.3 Active Record(主動式記錄)
10.4 Data Mapper(資料對應器)
Chapter 11 物件關聯行為模式
11.1 Unit of Work(工作單元)
11.2 Identity Map(識別對應表)
11.3 Lazy Load(延遲載入)
Chapter 12 物件關聯結構模式
12.1 Identity Field(識別欄位)
12.2 Foreign Key Mapping(外部索引鍵對應)
12.3 Association Table Mapping(關聯表格對應)
12.4 Dependent Mapping(依賴對應)
12.5 Embedded Value(內嵌值)
12.6 Serialized LOB(序列化大型物件)
12.7 Single Table Inheritance(單一表格繼承)
12.8 Class Table Inheritance(類別表格繼承)
12.9 Concrete Table Inheritance(實體表格繼承)
12.10 Inheritance Mappers(繼承對應器)
Chapter 13 物件關聯中繼資料對應模式
13.1 Metadata Mapping(中繼資料對應)
13.2 Query Object(查詢物件)
13.3 Repository(儲存庫)
Chapter 14 Web 展示模式
14.1 Model View Controller(模型- 檢視- 控制器)
14.2 Page Controller(頁面控制器)
14.3 Front Controller(前端控制器)
14.4 Template View(範本檢視)
14.5 Transform View(轉換檢視)
14.6 Two-Step View(兩階段檢視)
14.7 Application Controller(應用控制器)
Chapter 15 分散式模式
15.1 Remote Facade(遠端外觀)
15.2 Data Transfer Object(資料傳輸物件)
Chapter 16 離線並行模式
16.1 Optimistic Offline Lock(樂觀離線鎖定)
16.2 Pessimistic Offline Lock(悲觀離線鎖定)
16.3 Coarse-Grained Lock(粗粒度鎖定)
16.4 Implicit Lock(隱含鎖定)
Chapter 17 工作階段狀態模式
17.1 Client Session State(用戶端工作階段狀態)
17.2 Server Session State(伺服器工作階段狀態)
17.3 Database Session State(資料庫工作階段狀態)
Chapter 18 基礎模式
18.1 Gateway(閘道)
18.2 Mapper(對應器)
18.3 Layer Supertype(分層超級型別)
18.4 Separated Interface(分離介面)
18.5 Registry(登錄表)
18.6 Value Object(值物件)
18.7 Money(金錢)
18.8 Special Case(特殊情況)
18.9 Plugin(外掛)
18.10 Service Stub(服務替身)
18.11 Record Set(記錄集)
Appendix 附錄
作者介紹
作者簡介
Martin Fowler 是ThoughtWorks公司的首席科學家(ThoughtWorks是一間專業的企業級軟體開發與系統整合公司)。早在1980年代,他就是率先使用物件技術建置多分層企業級應用程式的領航者。他也是多本經典名著的作者,包括《Analysis Patterns》、《UML Distilled》、《Planning Extreme Programming》和《Refactoring》等等,以上書籍均由Addison-Wesley出版。他的個人網站:https://www.martinfowler.com。
譯者簡介
陳傳興(Bruce Chen) 由MS-DOS 6.22與Intel 486 DX2-66進入資訊領域,在QBasic寫下第一行Hello World,就愛上了開發的世界,目前任職於遠東金士頓科技擔任資深工程師。現任微軟最有價值專家(Microsoft MVP),喜歡分享技術心得於部落格,瀏覽量超過七百萬。STUDY4與twMVC社群核心成員。合著出版作品有《ASP.NET MVC4網站開發美學》、《ASP.NET MVC 5網站開發美學》。協助翻譯Github上擁有9.6K星星的《ASP.NET Core 開發人員指南》,為繁體與簡體中文化的主要貢獻者。
張立顗(Poy Chang) 10歲開始用FPE玩遊戲,目前任職於遠東金士頓科技擔任資深工程師。現任微軟最有價值專家(Microsoft MVP),微軟認證DevOps工程師專家,STUDY4技術社群核心成員。譯有《ASP.NET Core 開發人員指南》。不定期在部落格撰寫技術文章,舉辦技術活動,公開演講,分享浩瀚技術海中的一片浪花。
審校者簡介
黃忠成(Jeffray Huang) 現為系統架構及開發專業顧問,精通多種開發環境與程式語言,大型專案的跨領域整合尤其拿手,素有鬼才之稱。2008~2016 Microsoft MVP、Microsoft Techdays與MSDN資深講師、資策會客座講師;電腦書籍黃金年代的頂尖作者,出版過四本程式開發的相關著作,尤其是《極意之道次世代.NET Framework 3.5資料庫開發聖典ASP.NET篇》至今在繁體中文的世界裡仍然無人可出其右,堪稱為LINQ Framework中的聖經版本。