按照領域驅動設計的思路,我們搭建開發框架的解決方案如下:
*該解決方案正在改造過程中,會隨著改造的過程逐步完善。
解決方案目錄
對應領域設計層
說明
Infrastructure
基礎設施層
開發的底層類庫
Core
包括緩存、配置、日志、常用工具、數據訪問等核心組件
Core.Caching.Redis
Redis分布式緩存的實現
Core.Data.Entity
EntityFramework的封裝類庫
PlugIns
主要針對外部產品的封裝SDK,解決方案中暫缺
Domain
業務領域層
業務領域模型以及業務邏輯
Model
業務領域實體
Model.Mapping
業務領域實體的數據庫映射
Repoistory
業務領域倉儲實現
Repoistory.Interface
業務領域倉儲接口
Service
業務領域邏輯實現
Service.Interface
業務領域邏輯接口
AppService
應用服務層
SOA方式,對上層提供服務
AppService
對外提供的應用層服務
AppService.Interface
對外應用層服務的接口
Presentation
用戶界面表現層
針對Windows/Web應用的組件和控件封裝
Web.Library
Web網站類庫和控件
Web.Controls
Web控件
Client
客戶端
客戶端具體的實現
Areas
客戶端的Areas
Common
公共區域
DataWare
數據倉庫區域
SampleWebApp
樣例網站
StaticWebApp
靜態資源網站
ConsoleApp
控制台應用,主要是後台任務的調用。類似原先的Windows服務
重點對Areas部分做下說明:我們將客戶端整個應用按照業務模塊進行劃分,可以分為通用區域、門戶區域、數據倉庫區域、工作流和表單區域、CMS區域等等。為了少寫些字,我在表格中只列出了門戶和數據倉庫區域。這樣各個客戶端應用在建立時,只需要引用相關區域即可,不一定把所有的區域都引用進來,這就是所謂的插件方式。以後仔細研究下ApplicationPart的做法,看看能否將Area修改為ApplicationPart。