使用VS2012 Visualization & Modeling SDK为Apworks添加领域模型设计器

随着几个版本的更新,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中,我们设定:

  1. Type分为:Class和Interface
  2. 关联关系分为:聚合、引用、继承、实现四种
  3. Domain Class分为:Aggregate Root、Entity、Value Object三种
  4. Aggregate Root可以聚合Entity、Value Object
  5. Aggregate Root可以引用Aggregate Root
  6. Entity可以聚合Entity、Value Object
  7. Entity可以引用Aggregate Root

以下是设计器中展现的Domain Classes和Domain Relationships(点击此处下载xps格式全图):

image

以下是在Visual Studio 2012中,使用设计好的DSL进行Domain Model的设计的界面截图。该图展示了Byteart Retail项目的Domain Model设计界面:

image

目前来讲,这些都只是刚刚开始。要让这个DSL能够真正支持Apworks框架的项目开发,还需要做很多工作。今后,开发人员直接使用该DSL,就能够很方便地设计面向DDD的Domain Model,而模型的代码也会在后台自动产生。

posted @ 2012-11-21 11:32  dax.net  阅读(3968)  评论(14编辑  收藏  举报