隨着幾個版本的更新,Apworks框架也日趨成熟。為了能夠讓開發人員更加方便地使用該框架進行企業級應用程序的開發,在維護框架本身的同時,我也致力於與其配套的工具軟件和Visual Studio插件的研究和開發。在Apworks的最新版本中,已經添加了分別面向NHibernate和Entity Framework的WCF服務開發項目模板,但這個模板還很不完善,擴展性也不好(比如框架本身還支持MongoDB的實現,但開發模板卻沒有這個選項),因此我也會在今后進一步完善,並發布在下個版本的Apworks工具集當中。
最近實踐了一下Visual Studio 2012 Visualization & Modeling SDK(V&M SDK),它是一個基於Visual Studio 2012 SDK上的軟件開發包。通過使用V&M SDK,開發人員可以根據自己的實際需要開發一套領域特定語言(DSL),並在實際項目中使用這種語言進行建模或自動化代碼產生。其實我們早已接觸過DSL並認識到它的好處,在日常開發中,DSL隨處可見:Entity Framework中用於建立模型的設計器、LINQ語句、Fluent Interface、web.config文件等等。在codeplex上還有個很好的項目,它能夠幫助你以圖形化的方式設計你的配置文件配置節點,並生成一個配置文件的XSD Schema和配置文件樣本,遺憾的是,目前它還不支持Visual Studio 2012。
在實踐的過程中,我也試着設計了一下面向DDD的DSL,注意,它是面向DDD本身的,而不是面向特定領域的通用語言。在這個DSL中,我們設定:
- Type分為:Class和Interface
- 關聯關系分為:聚合、引用、繼承、實現四種
- Domain Class分為:Aggregate Root、Entity、Value Object三種
- Aggregate Root可以聚合Entity、Value Object
- Aggregate Root可以引用Aggregate Root
- Entity可以聚合Entity、Value Object
- Entity可以引用Aggregate Root
以下是設計器中展現的Domain Classes和Domain Relationships(點擊此處下載xps格式全圖):
以下是在Visual Studio 2012中,使用設計好的DSL進行Domain Model的設計的界面截圖。該圖展示了Byteart Retail項目的Domain Model設計界面:
目前來講,這些都只是剛剛開始。要讓這個DSL能夠真正支持Apworks框架的項目開發,還需要做很多工作。今后,開發人員直接使用該DSL,就能夠很方便地設計面向DDD的Domain Model,而模型的代碼也會在后台自動產生。