Welcome

首页 / 软件开发 / .NET编程技术 / Visual Studio DSL入门 4--- 基本概念

Visual Studio DSL入门 4--- 基本概念2011-02-06 博客园 孤独侠客开发一个DSL需要创建的几个不同的组成部分:域模型,图形符号,工具箱,资源管理器和属性窗口,验证,序列化和部署,打开上一节我们创建的 LanguageSm项目中的DslDefinition.dsl文件,可以看到在中心文档区域有左右两部分(两个泳道).

1.左侧是元数据模型(域模型). 也就是域类和域关系.

2.右侧是图形符合,也就是图形元素(Diagram Elements).

其实我们是在用DSL本身在创建DSL,这些描述本身也是在用DSL.

另外,域模型与图形符号之间通过连接器(Connectors)连接,域类之间可以通过关系relationships连接.

域模型

(Domain Model)

每一个DSL的核心都是一个域模型,它定义了语言所代表的各种概念,它们的属性,以及它们之间的关系。在模型驱动开发中,我们的模型要抽象出来,并用 DSL的语法描述出来,这也就是用域模型来描述,只要我们有了域模型,工具箱,图形展现都是基于域模型然则创建的。

域模型有两个概念:

1.根域类(root Domain Class)

任何一个DSL有且只有一个根域类,它和你的图形对应,这里说的图形是整个图形的概念。从我们上一节的项目中可以看到,我们创建的时候默认就自动创建了根域类(ExampleModel)和它对应的图形(ExampleShape)。

2.域类(Domain Class)

和根域类不一样,ExampleElement是真正意义上的模型。并且它有一个属性,名称为Name,类型为String.

域关系(domain relationships)

1.嵌入关系(embedding relationship)

嵌入关系表示一个模型能够嵌入在另外一个模型中。在我们的dsl中的可以找到嵌入关系ExampleModelHasElements,把ExampleModel和ExampleElement联系起来(见下图).