1. 商務邏輯與系統結構1.1. 商務邏輯
Store系統的商務邏輯主要包括如下幾條:
- 基於多店鋪使用。
- 庫存=採購入庫-採購退貨-銷售零售+銷售退貨
- 毛利潤=(零售價格-採購進價)*零售數量
篇幅有限,我在這裡只是簡單的列舉了便利店管理中的常見商務邏輯,複雜的更細不在這裡一一展開了。
1.2. 系統結構
本案例Store系統採用領域驅動設計,共分為四層:展示層、應用服務層、領域層和基礎結構層。
展示層由 Windows表單和程式碼後置檔案組成。Windows表單只是提供使用者操作及介面排版,而程式碼後置檔案實現各種控制項的事件處理。
應用服務層則是一個WCF Service,主要為了對外提供API以便外部系統可以通過提供的API與本系統進行互動及擴充。
領域層主要是對業務領域的實體屬性進行定義;
基礎結構層則為整個應用提供了Repository、ORM等的具體實現。
整個系統架構基本上可以以描述:
需要說明的是,在中的展示層(WinApp)依賴於倉儲(Repository)的介面和領域層(Domain Model)。倉儲(Repository)依賴於倉儲(Domain Model)及倉儲(Repository)的介面。Store系統採用依賴注入,將倉儲(Repository)注射到展示層(WinApp)中,所以展示層(WinApp)根本不依賴於倉儲的具體實現方式。
Visual Studio 2008解決方案結構
Store系統在Microsoft Visual Studio 2008的解決方案下包含六個項目:CnToSoft.WinApp.Store、CnToSoft.Domain.Store、CnToSoft.Services.Store、CnToSoft.Repositories.Store、CnToSoft.Repositories.Store.Test及CnToSoft.Library。如下所示:
- CnToSoft.WinApp.Store:提供使用者介面與互動介面
- CnToSoft.Domain.Store:領域模型項目,其中包括了Store系統的領域模型與部分商務邏輯,也是本案例的核心所在。
- CnToSoft.Services.Store:暫時空著。
- CnToSoft.Repositories.Store:倉儲的具體實現項目。本項目僅包含了針對Nhibernat的倉儲實現。