今天是個特殊的日子,我在北京房租價格又上了一個新的台階。在這個日子我準備開始建立一個開源項目,一個B2C行業的EC系統。
一、關於定位
我要做的不只是一個商城,應該說是一個能滿足中小型企業建立電子商務的一套完善的系統。其中的一些模組包括(但不限於)如下:
1. 前台商城
1.1. 前台網站商品的展架模組,包括整個商品的推銷策略,包括分類、檢索、各類活動形式等。
1.2. 前台的購物流程,包括購物車、定單、支付等。共中的客戶可能包括:一般零售客戶、大客戶、團購客戶等。
1.3. 前台使用者中心,包括個人資訊及商業行為資訊等的維護。
2. 後台ECERP系統
1.1. 對前台各展架資訊等的維護模組,也就是網站管理模組。對應的操作角色:網站的營運人員
1.2. 商品管理模組,對商品的分類、商品等基元資訊進行管理等。對應的操作角色:網站營運人員、採購人員等。
1.3. 活動管理模組,包括優惠券系統等。對應的操作角色為:網站營運人員
1.4. 採購模組,對商品的庫存進行管理,一系統的缺斷貨控制等。對應操作的角色為:採購人員
1.4. 銷售定單處理模組,對定單進行處理。對應的操作角色為:客戶服務人員、財務人員、主管人員等概據不同角色進行處理。
1.4. 財務模組,財務人員進行銷售的收款單處理,採購的付款單處理等。對應的操作角色為:財務人員
1.5. 售後模組,對售後進行管理,商品的退貨換貨等。對應的操作角色為:客服人員、售後工作人員、物流人員
1.6. 物流模組,對定單的出貨、換貨、退貨等業務進行處理。對應的操作角色為:物流人員
1.7. 倉庫管理模組,對倉庫進行管理。對應的操作角色為系統管理人員
3. 其他
當然系統還需要許可權的支撐。其他的還有很多東西通過增量的方式迭代出來吧。
二、關於開發模式
最好的開發模式就是無模式了,適合自己就好,不過也要有個基本的思路,本系統將採用2個DDD,第一個就是Domain driven design(領域區動設計),
第二個就是Domain driven development(領域區動開發),當然DDD只是個思想,我們不必拘泥於形,每個人都有每個人的想法,還是那句話:適合自
己就好。
這裡說一下敏捷開發,我對這個概念理解不深。個人感覺真的沒必要理解的“過於深”,個人感覺現在一般的小公司的開發模式“不正規,很敏捷”,由於
沒有正規的開發方法論,一直是個迭代的過程。沒有文檔、口頭交流、增量、迭代好像出現了不少這樣的名詞了。
三、關於架構
架構方面現在只是個初步想法,先貼出來大家參考下。
以上Solution圖我一個一個的簡要描述一下:
AssionShop.AdminWeb 這個是個WebForm項目,是我們前面提到的ECERP系統的UI層,做這樣的資訊系統WebForm還是有一定優勢的,具體再定。
AssionShop.Caching 系統的緩衝層,之所以把緩衝獨立出來,因為它在項目中的份量挺重要的,對對象的生命進行支援,可以抽象出支援多種緩衝架構,
比如asp.net的進程緩衝,基於key-value的分布式緩衝產品等。
AssionShop.Common 系統的一些公用架構級模組,可能包括字元處理、AOP、IOC、ORM、Log等一系列支撐對象。
AssionShop.DBMap 資料庫映射層,可以採用NHibernate架構來解決o-r的陰抗問題。為什麼不直接在Repositories裡?不為什麼。
AssionShop.Domain 領域層,系統的核心商務邏輯對象,不依懶其它任務層,半充血模式。不自身完成持久化,持久化由倉儲來負責。
AssionShop.Dto 資料傳統對象,裡麵包括資料傳統對象和相應的適配器,註:有可能DTO直接跨越UI和Repositories/DBMap 比如系統的報表等。
AssionShop.Repositories 倉儲,負責Domain的工廠生產及生命週期控制,內部調用緩衝和資料庫完成領域對象的持久化。
AssionServices 這個Services應該是ApplicationService而非DomainService,它調用Domain與Repositories進行輕量的組裝,為UI或是SOA提供API,
我把事務控制放在這層,採用MSDTC分散式交易,Services為事務邊界我認為是比較合理的。
AssionShop.Web 前台商城WEB項目,初步計劃採用asp.net mvc 這層同AdminWeb一樣,調用Services以及對DTO對象的引用。
以上就是項目的初步設想與規劃定位,有很多不足將通過一步步的深入進行處理。下一章將從需求的《用例模型》開始。