-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

領域驅動設計精粹

( 簡體 字)
作者:覃宇,笪磊類別:1. -> 程式設計 -> 綜合
譯者:
出版社:電子工業出版社領域驅動設計精粹 3dWoo書號: 49957
詢問書籍請說出此書號!

缺書
NT售價: 325

出版日:9/1/2018
頁數:164
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121348525
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

譯者序

2003年,Eric Evans的《領域驅動設計》出版,第一次總結了這種軟件設計和建模方法。這種方法讓團隊在質疑中發展出對復雜問題的統一認識,再利用戰略設計和戰術設計的各種手段,如同庖丁解牛般地分解并映射成各種構造塊,最后信手拈來地運用各種設計模式將這些構造塊一一化解。領域驅動設計在國外的技術社區一直是受到熱捧、不斷演化的軟件設計方法。在Eric的著作面世十年之后,另一位DDD社區的領軍人物Vaughn Vernon撰寫了《實現領域驅動設計》。在這本著作中,Vaughn用一個連貫完整的實例,將領域驅動設計的所有概念和模式串連在一起,并將這些內容落地到了實例的代碼之中。另外,他還在這部著作中總結了這十年來DDD社區涌現的一些新的架構風格和模式,如事件溯源和CQRS、REST風格的架構、事件驅動的架構、六邊形架構,等等。
但這十幾年間,在國內技術社區,領域驅動設計卻像被遺忘在角落的寶藏等待著人們去發掘。當越來越復雜的業務場景開始頻繁涌現,當工程實踐和基礎設施發展成熟,我們重新將視線匯聚在如何達成有效設計、將復雜的業務分而治之,我們發現這種設計方法仿佛早就看透了一切。當寶藏上的灰塵被拂去,領域驅動設計再次發出璀璨奪目的光芒,為我們指明應對軟件系統復雜性的前進方向。
重新煥發青春活力的領域驅動設計得到了許多新的團隊和架構師的青睞。他們首先就會去閱讀這兩部略微晦澀的著作,期望能快速地學習和掌握這種方法,但很快就會發現這并不輕松。首先,這兩部著作要求讀者具備一定的軟件開發技術背景。在領域驅動設計的實踐中,業務領域的專家在團隊中扮演關鍵角色,他們往往沒有軟件開發的技術背景。兩位軟件巨匠在著作中詳細闡述技術概念和實現代碼時并沒有照顧他們的感受。其次,這兩部著作缺少對實際項目建模過程的描寫。我們讀到的內容多是概念的闡述和與之對應的實例及代碼,對于建模實操的過程和工具著墨不多。而這些Magic Move卻是很多團隊實施領域驅動設計時迫切需要指導的關鍵步驟。最后,兩部著作的內容包羅萬象,讀者容易被繁雜的知識淹沒。兩部著作中的一些概念和模式(如值對象、實體、工廠和倉儲)早已深入人心。而另一部分模式和架構(如事件溯源和CQRS)則要求架構經驗尚淺的讀者通過項目實踐或擴展閱讀才能深入理解。
作為《實現領域驅動設計》一書的作者,Vaughn也意識到了這些問題,因此編寫了這本“精粹版”。他將領域驅動設計的知識進行了提煉,保留了子域、限界上下文、上下文映射、聚合、領域事件這些核心概念,分別用一個章節進行了闡述。在最后一章,作者將他過去在一些團隊中實踐領域驅動設計時行之有效的具體操作方法(如風靡DDD社區的事件風暴工作坊)和工具進行了總結。本書的內容更側重于高層次的戰略設計,關于戰術設計的內容偏少,尤其是代碼在內容中的比重極低,完全不影響非技術背景的讀者閱讀。如果你想開始在團隊中嘗試領域驅動設計,對于團隊(包括業務領域的專家)來說,本書的內容可以作為指導手冊,讓他們快速地進入狀態,達到可以參與事件風暴工作坊的要求。我們建議讀者們在閱讀本書之后親自組織并實施一次事件風暴工作坊,這是作者推薦的融合視覺、聽覺和觸覺三種學習方式的“知識獲取”實踐,是威力無窮的領域建模形式。在開發團隊完成建模并最終需要落實到代碼時,讀者可以將本書作為“武林秘籍”的目錄,結合前兩部著作和本書參考文獻中引用的其他專著一起閱讀。
本書中,作者毫不掩飾地表達了對一些架構模式和具體實踐的偏好。這些特色鮮明的觀點之中,有些符合社區的普遍認知,如事件驅動的響應式架構、單元測試、事件風暴;有些卻是對爭議性話題的個人理解,如作者對于建模設計的工作量估算的看法。我們要牢記一點,沒有“銀彈”可以精確地匹配我們的產品和團隊,或者完美地解決我們要面對的問題。任何工具和實踐都有約束條件。讀者們在采用這些工具和實踐時,不妨仔細思考作者運用它們的上下文及其體現出的原則,結合自己的實際情況對工具和實踐進行持續改進,避免出現教條主義錯誤。
我和同事笪磊結對完成了對本書的翻譯。我們一人擅長技術,一人則擅長管理,翻譯的過程也是我們默契配合、實踐“發展通用語言”的“知識獲取”過程。我們也將個人對關鍵內容的理解補充記錄在譯注中。我們力求翻譯內容的準確和譯注的質量,但受限于個人經驗和知識水平,難免出現偏差甚至錯誤,還請各位讀者斧正。
本書翻譯工作于2017年末啟動,兩個月后初稿完成并進入了審校階段。這期間正值農歷戊戌年春節,我們的投入離不開家人們的理解和支持,謝謝她們。我們還要感謝提出寶貴意見的審校者:肖然、劉傳湘、王威、朱傲、黃雨清、王林波。他們過去幾年都活躍在國內DDD社區,也幫助過許多團隊運用領域驅動設計方法和事件風暴工作坊來實施架構設計和系統改造。他們過硬的理論知識和豐富的實踐經驗讓本書的翻譯增色不少。最后,我們還要感謝專業和嚴謹的編輯張春雨和劉佳禾,本書也凝聚著你們的心血。

覃宇
2018年7月





為什么建模是一件既有趣又回報諸多的事情?從孩童時起,我就喜歡上了構建模型。那時我搭建最多的是汽車和飛機。當時我并不知道樂高玩具的存在。不過,從我的兒子很小的時候起,樂高就一直伴隨著他的成長。用這些樂高積木構思和搭建模型是如此令人著迷。構建一個基礎模型非常簡單,幾乎可以無止境地發揮想象力。
你也許也會聯想到某些新潮的建筑模型。
模型在我們生活中無處不在。如果你喜歡玩桌游,你正是在使用模型。這里的模型可能是房產和業主,或是島嶼和幸存者,抑或是領地和建設活動,等等。同樣,視頻游戲也藏匿了多個模型。這些模型也許塑造了一個奇幻世界,那里充滿了奇特的人物,他們扮演著夢幻般的角色。而撲克牌或者與之相關的游戲則是體現著競技的模型。模型就是生活的一部分。人們總是在使用模型,雖然往往并不會承認。
為何如此?因為人人皆有各自的學習方式。雖然學習方式有很多種,但討論最多的三種方式是聽覺、視覺和觸覺。聽覺學習者通過聲音和聆聽來學習。視覺學習者通過閱讀和瀏覽影像來學習。觸覺學習者通過觸摸的行為來學習。有趣的是,每個人都會熱衷于某種學習方式,以至于有時會在其他學習方式上遇到麻煩。例如,觸覺學習者能記住他們所做過的事情,但可能會忘記過程中所聽見的內容。建模的過程主要會涉及視覺和觸覺的刺激,因此你可能會認為視覺和觸覺學習者比聽覺學習者更具有優勢。然而,事實并非總是如此,尤其當一組建模者在構建的過程中使用有聲溝通時。換句話說,模型的構建過程應該適用于大多數人的學習方式。
從建模中學習的能力是人類與生俱來的,為何不利用它去構建已經給生活帶來巨大幫助和影響的軟件模型呢?事實上,軟件模型需要人類去實現,也應該由人類去完成。我認為,人類本應該是優秀的軟件模型構建者。
我強烈期望能夠幫助你使用最好的建模工具來實現軟件。這些工具已被打包成“領域驅動設計”工具箱,或稱之為“DDD”工具箱。該工具箱實際上是一套模式,在Eric Evans所著的《領域驅動設計:軟件核心復雜性應對之道》[DDD]一書中首次提出。我期望將DDD帶給每一個人。如果必須表達我的觀點,我想說的是,讓我把DDD介紹給大家吧!DDD也本該如此,它是面向模型設計的人們用于構建卓越軟件模型的工具箱。本書中,我會盡可能地簡化DDD的學習和使用,并將其帶給每一位讀者。
對于聽覺學習者而言,DDD通過團隊的溝通來構建基于通用語言的開發模型,并以此創造學習的契機。對于視覺和觸覺學習者來說,在團隊進行戰略和戰術建模時使用DDD,其過程高度視覺化并非常注重實操。繪制上下文映射圖 并使用事件風暴構建業務流程時尤為如此。因此,我相信DDD可以幫助到每一位期待通過模型構建來學習并且希望獲得偉大成就的人。
本書所面向的讀者
本書適用于對快速學習DDD核心概念和主要工具感興趣的人。最主要的讀者是軟件架構師和開發者,他們將在項目中實踐DDD。通常,軟件開發者會很快發現DDD的美妙之處,并被其強大的工具深深地吸引。盡管如此,本書也可以幫助高管、領域專家、經理人、業務分析師、信息架構師和測試人員理解這一主題。并非只有那些從事信息技術(IT)行業和研發(R&D)行業的從業者才能從書中獲益。
如果你是一位顧問,并且正在推薦你的客戶使用DDD,那么請將本書提供給主要負責人,這會幫他們快速地理解DDD。如果你團隊中的初級、中級甚至資深開發人員需要盡快在項目上采用DDD,但對其并不熟悉,請讓他們閱讀此書。本書至少可以讓所有的項目負責人和開發人員熟悉DDD詞匯表,并了解即將使用的主要工具,這將使他們能在項目推進過程中不斷地分享一些有意義的內容。
無論你處于什么樣的經驗水平或擔任什么樣的職務,請閱讀本書并在項目中實踐DDD。之后再重讀此書,看看你從項目中學到了什么,以及將來如何進一步改進。
本書的內容
第1章解釋了DDD能為你和你所在的組織帶來什么,并詳盡地說明了你將學到什么,以及DDD為何如此重要。
第2章介紹了DDD的戰略設計,并教授了DDD的重要概念:限界上下文與通用語言。第3章解釋了子域,以及在新應用建模時如何使用子域應對新應用與現有遺留系統集成的復雜性。第4章教授了團隊在戰略層面上的各種協作方式,以及軟件的集成方式,即所謂的上下文映射。
第5章將注意力轉移到了使用聚合進行戰術建模中。領域事件是一個與聚合共同使用的重要而又強大的戰術建模工具,它是第6章的主題——運用領域事件進行戰術設計。
最后,第7章會著重介紹一些加速設計和管理項目的工具,它們可以幫助團隊建立并保持研發節奏。以上的兩個話題很少在其他DDD書籍中討論,但確實是那些決心將DDD付諸實踐的人所迫切需要的。
行文慣例
請在閱讀中注意幾點行文慣例。所有討論的DDD工具都會用楷體字表示。例如,你將會看到以楷體印刷的限界上下文和領域事件。另外所有的源代碼將會用等寬字體印刷。本書正文章節中出現在方括號內的首字母縮寫代表相關的書籍和文獻,它們都列在本書末尾的參考文獻中。
除此之外,本書重點強調的,也是讀者最為喜歡的部分是,通過大量圖表和插圖進行的視覺學習方式。本書中所有插圖都沒有任何數字編號,這是因為我不想讓太多的數字分散你的注意力。每個案例的圖表和插圖都會位于對其討論的正文之前,這也意味著當你閱讀本書時,這些視覺圖形將首先引發你的思考 。而當閱讀正文時,你也可以反過來參考之前的插圖和圖表。
讀者服務
輕松注冊成為博文視點社區用戶,掃碼直達本書頁面。
提交勘誤:您對書中內容的修改意見可在 提交勘誤 處提交,若被采納,將獲贈博文視點社區積分(在您購買電子書時,積分可用來抵扣相應金額)。
交流互動:在頁面下方 讀者評論 處留下您的疑問或觀點,與我們和其他讀者一同學習交流。


致謝

這是我和Addison-Wesley合作出版的第三本書,同樣也是我與編輯Chris Guzikowski和Chris Zahn的第三次合作。對我而言,這一次和前兩次一樣令人興奮。再一次感謝各位選擇將我的書籍出版。
與以往一樣,本書的順利完成與出版離不開專家的審閱及反饋。這一次,我將目光轉向了那些不需要教授或為DDD著書的實干家們,但他們仍然奮斗在項目一線,并幫助其他人使用強大的DDD工具箱。我認為,也只有他們這樣的實干家才可以確保極度精練的材料以正確的方式精確地表述了必要的內容。這就有點像,如果你希望我做一次60分鐘的演講,只需要給我5分鐘時間去準備;而如果是5分鐘的演講,我則需要幾個小時來準備。
以下都是給予我莫大幫助的人們(按字母排序):Je?re?mie Chassaing、Brian Dunlap、Yuji Kiriki、Tom Stockton、Tormod J. Varhaugvik、Daniel Westheide和Philip Windley。非常感謝他們!


關于作者

Vaughn Vernon是一位經驗豐富的軟件工匠,也是追求簡化軟件設計和實現的思想領袖。他是暢銷書《實現領域驅動設計》和《響應式架構:消息模式Actor實現與Scala、Akka應用集成》的作者,這些書也同樣由Addison-Wesley出版發行。他在全球面向數百位開發者教授過IDDD課程,并經常在行業會議上發表演講。他對分布式計算、消息機制,特別是Actor模型非常有興趣。Vaughn擅長領域驅動設計和使用Scala、Akka實現DDD方面的咨詢。你可以通過www.VaughnVernon.co查看他的最新研究成果,或者關注他的Twitter。
內容簡介:

領域驅動設計是時下軟件設計領域中的熱門話題,它通過指導我們構建領域模型,來表達豐富的軟件功能需求,并由此實現可以滿足用戶真正的需要的軟件。然而在真實的實踐過程中,由于不同的角色對于DDD的核心概念和主要工具的理解不同,常常會造成協作上的不一致。為了幫助和指導面向對象開發人員、系統分析人員和設計人員更加合理地組織工作,各有側重、有條不紊地進行復雜系統的開發,并有效地建立豐富而實用的領域模型。本書的作者Vaughn Vernon(他也是《實現領域驅動設計》)將自己近年來在領域驅動設計領域的理解進一步提煉,并將本書以精粹的形式呈現給廣大的讀者。 本書的內容包括: * DDD對于廣大讀者的意義- DDD 對我而言 * 從戰略層面進行設計 - 如何運用限界上下文和通用語言、子域、上下文映射 * 從戰術層面進行設計 - 如何運用聚合、領域事件 * 相關輔助工具 - 加速和管理工具 當然,僅僅通過此書的閱讀是無法深入的掌握領域驅動設計的精髓,無論你是什么經驗水平或角色,請閱讀本書并在項目中實踐DDD。并在這之后,再重讀此書,看看你從項目的經歷中學到了什么,反復這樣的循環,你將會獲益匪淺。

目錄:

第1章 DDD對我而言 1
DDD很難掌握嗎 2
優秀設計、糟糕設計和有效設計 3
戰略設計 8
戰術設計 9
學習過程與知識提煉 10
讓我們開始吧! 11
第2章 運用限界上下文與通用語言進行戰略設計 13
領域專家和業務驅動 20
案例分析 24
戰略設計是必要的根基 28
在質疑中統一 32
發展通用語言 38
應用場景 42
如何持續 45
架構 46
本章小結 50
第3章 運用子域進行戰略設計 51
什么是子域 52
子域類型 53
應對復雜性 54
本章小結 56
第4章 運用上下文映射進行戰略設計 57
映射的種類 60
合作關系 60
共享內核 61
客戶—供應商 62
跟隨者 63
防腐層 64
開放主機服務 65
已發布語言 65
各行其道 66
大泥球 67
善用上下文映射 69
基于SOAP的RPC 70
RESTful HTTP 72
消息機制 74
上下文映射示例 79
本章小結 83
第5章 運用聚合進行戰術設計 85
為什么使用它 86
聚合的經驗法則 91
規則一:在聚合邊界內保護業務規則不變性 92
規則二:聚合要設計得小巧 93
規則三:只能通過標識符引用其他聚合 95
規則四:利用最終一致性更新其他聚合 96
建立聚合模型 99
慎重選擇抽象級別 104
大小適中的聚合 106
可測試的單元 108
本章小結 108
第6章 運用領域事件進行戰術設計 111
設計、實現并運用領域事件 113
事件溯源 119
本章小結 121
第7章 加速和管理工具 123
事件風暴 124
其他工具 134
在敏捷項目中管理DDD 135
運用SWOT分析法 137
建模Spike和建模債務 139
任務識別與工作量估算 140
限制建模時間 143
如何實施 144
和領域專家打交道 145
本章小結 147
參考文獻 148
序: