標籤:
企業級業務系統開發實戰通過一個系列講述一個真實企業的ERP系統開發全過程。其中包括需求分析、設計建模、開發、測試全生命週期過程,其中會詳細講方法論與技術實踐。涉及到的方法包括敏捷式軟體開發 (Agile Software Development)、四色原型、領域驅動設計、業務架構、技術架構與具體的EF、WF、EasyUI等技術在項目中的使用。領域驅動設計案例之領域層架構搭建摘要: 根據前面對領域驅動設計概念以及一些最佳實務的理解,領域模型是系統最核心的部分,我們還是採用前面銷售訂單的例子,這個案例系統的核心構建就從領域層開始。領域層架構搭建主要完成兩個任務:1.領域模型的建立,彙總與彙總根的確定,關係的確定。2.建立支援DDD理論的領域層介面。這裡先上代碼圖,再詳細講每個部分...閱讀全文posted @ 2015-11-26 11:10 曹劍 閱讀(446) | 評論 (0) 編輯 領域驅動設計之體系架構模式互動過程與最佳實務摘要: 上一文主要講了DDD體系架構以及每一層主要的作用,這篇主要描述各層之間如何進行互動,以及互動的最佳實現方式。1.應用程式層某個應用程式層服務被介面層調用,開始啟動。2.對於需要新增領域對象的情況,應用程式層調用領域層中某個領域對象(彙總根)的建構函式或工廠建立出領域對象,然後調用領域對象的某些方法進行相關的業務...閱讀全文posted @ 2015-11-25 15:07 曹劍 閱讀(41) | 評論 (0) 編輯 領域驅動設計之體系架構模式摘要: 我們傳統的體系架構模式是三層架構:我認為傳統的三層架構主要存在以下問題:1.業務層直接存取資料訪問層,也就是業務層直接與資料打交道,與資料實現機制綁定太緊。2.資料訪問層的地位太突出,而且沒有體現系統所需要的其他基礎服務機制。3.業務層並沒有很好的指導應該如何進行構建。DDD經典分層架構:一.使用者界...閱讀全文posted @ 2015-11-25 15:06 曹劍 閱讀(22) | 評論 (0) 編輯 領域驅動設計之倉儲摘要: 在瞭解倉儲之前,首先我們來看領域對象的生命週期。1.首先通過調用領域對象的建構函式或工廠建立出對象,對象處於活動狀態,這時對象可以進行相關商務邏輯處理。2.對象如果需要進行持久化,則需要通過持久化操作將Object Storage Service到持久化儲存中,比如資料庫。3.當需要使用某個對象時,可以通過訪問持久化儲存重建這個對象,...閱讀全文posted @ 2015-11-25 15:03 曹劍 閱讀(16) | 評論 (0) 編輯 領域驅動設計之工廠摘要: 領域模型包含領域對象,也就是實體、值對象、領網域服務。領域對象除了包含狀態資訊外,還包含必要的商務邏輯。為了能夠使用這些領域對象,就需要執行個體化這些領域對象。執行個體化領域對象可以採用兩種方式:1.通過調用領域對象的建構函式對其進行執行個體化,比如Order order=new Order();2.通過調用領域...閱讀全文posted @ 2015-11-25 15:00 曹劍 閱讀(12) | 評論 (0) 編輯 領域驅動設計之彙總與彙總根執行個體二摘要: 這個執行個體主要說明一個論壇發帖與回複的情境。一般大家的理解是回複必須依賴與文章,並且回複是沒有單獨存在的必要,並且文章與回複通常具有一些不變性約束規則,比如發布一個回複,在文章中同時增加一次回複次數;回複過的文章就不再允許刪除等,所以一般理解是文章與回複屬於一個彙總,文章是彙總根,回複是彙總中的一個實...閱讀全文posted @ 2015-11-25 14:58 曹劍 閱讀(13) | 評論 (0) 編輯 領域驅動設計之彙總與彙總根執行個體一摘要: 通過一個執行個體來說明如何劃分彙總與彙總根情境:一個下訂單的業務,一個訂單必須有相應的客戶資訊,訂單下有訂單項,每個訂單項必須有相應的產品資訊,產品有分類的資訊。1.根據這個基本的需求,我們初步確定的實體、值對象與關聯關係為(這裡採用EF的Model First):2.經過業務深入分析,以及彙總與彙總根...閱讀全文posted @ 2015-11-25 01:14 曹劍 閱讀(35) | 評論 (0) 編輯 領域驅動設計之彙總與彙總根摘要: 對實體與值對象等進行關聯設計後,就應該進行彙總的劃分以及彙總根的確定。首先我們需要明確為什麼需要進行彙總的劃分?原來我們的系統對領域劃分的最小單位通常是模組,比如客戶資訊管理模組、僱員資訊管理模組。但模組的劃分對於設計來說,還是顯得粒度太粗。一.彙總與彙總根1.定義了對象之間清晰的關係和邊界,並實現...閱讀全文posted @ 2015-11-25 00:19 曹劍 閱讀(32) | 評論 (0) 編輯 領域驅動設計之關聯設計摘要: 在找到實體與值對象後,我們就需要進行對象之間的關聯設計。1.關聯盡量少,不要形成複雜的關係網。複雜的關係網不利於劃分邊界,理解與維護對象,同時對效能也有不利影響,通常關係只找出在整個業務生命週期都需要存在的關係。比如一個訂單項需要關聯到產品,但是仔細分析,一個訂單項並不需要再整個業務生命週期都需要存...閱讀全文posted @ 2015-11-24 23:33 曹劍 閱讀(33) | 評論 (1) 編輯 領域驅動設計之實體、值對象、領網域服務摘要: 建立領域模型的第一步就是需要識別出實體、值對象與領網域服務。一.實體1.實體是領域中需要唯一標識的領域概念。通常在業務中,需要唯一標識與區分的對象並需要持續對它進行跟蹤,這樣的對象我們認為是實體。這裡的唯一標識通常指的是業務上的唯一標識,比如訂單號、僱員工號等資訊,而不是資料庫中因為技術需要儲存的自增...閱讀全文posted @ 2015-11-24 23:23 曹劍 閱讀(45) | 評論 (1) 編輯 領域驅動設計之基本概念摘要: 企業級業務系統開發我們略過需求的採集、分析,直接進入設計。領域驅動設計(DDD)是近10年流行、比較成熟、比較成功的軟體設計方法、理論。我們早期常見的軟體開發方式是拿到產品需求後,直接考慮資料庫中表應該如何設計,這種方式已經將設計與業務需求脫節,而更多的是直接考慮應該如何?了,這有點本末倒置。而D...閱讀全文posted @ 2015-11-24 22:47 曹劍 閱讀(433) | 評論 (5) 編輯 企業級業務系統開發實戰-序言摘要: 前些年一直在做微軟的解決方案實施與軟體開發的工作。在學習、項目實施、開發與管理的過程中學到了別人不少好的東西,也自身總結了大量的經驗,希望能夠通過一個系列來跟大家分享關於軟體開發方面的內容。這個開發系列的由來是這樣的,兩年前作為一個軟體公司的技術總監,完成了一個企業的ERP系統開發,我在這個項目中擔...閱讀全文posted @ 2014-09-18 14:33 曹劍 閱讀(110) | 評論 (1) 編輯
企業級業務系統開發實戰