艾伟_转载:Visual Studio DSL 入门 2

简介: 相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助.

     相信如果看过一上篇你已经对vs.net dsl有了一定的了解,接下来我们就来开始我们的这个系列的入门,Vs.net Dsl在国内可能使用的人少之又少,不过希望这个系列能够使看到的人能够对dsl有一定的了解,使之能够成为产品方案选型时的一个参考,能够对阅读的人有所帮助.

准备环境
    由于vs.net 2010并未正式发布,所以这一系列基于vs 2008 sp1进行开发,Dsl tools是包含在VSX当中的,所以需要下载 Vistual Stutio.Net SDK 1.1安装,下载地址为:http://msdn.microsoft.com/zh-cn/vsx/default(en-us).aspx
    另外代码生成采用的是T4,为了方便T4的编写,需要下载T4编辑器http://www.t4editor.net/,遗憾的是Vs.net至今还没有内置T4编辑器,在vs 2010中也不会提供。
需求说明

    我们完成的这个简单的Demo类似于UML中的状态图(Statechart Diagram),  这个状态机由状态(states)组成,各状态由转移(transitions)链接在一起。状态是对象执行某项活动或等待某个事件时的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。
  状态(State)的要素:
         名称:    将一个状态与其他状态区分开来的文本字符串;状态也可能是匿名的,这表示它没有名称。 
         分类:    状态分为初始状态(initial state)和结束状态(end state).    
         进入/退出操作:    在进入和退出状态时所执行的操作。
         内部转移:        在不使状态发生变更的情况下进行的转移。
         子状态:          状态的嵌套结构,包括不相连的(依次处于活动状态的)或并行的(同时处于活动状态的)子状态。
         延迟的事件:      未在该状态中处理但被延迟处理(即列队等待由另一个状态中的对象来处理)的一系列事件。 
   转移(Transitions)的要素: 
        源状态:            转移所影响的状态;如果对象处于源状态,当对象收到转移的触发事件并且满足警戒条件(如果有)时,就可能会触发输出转移。 
        事件触发器:       使转移满足触发条件的事件。当处于源状态的对象收到该事件时(假设已满足其警戒条件),就可能会触发转移。 事件一般都有一个名称,但是有些转移没有事件名称,称为自动或隐式转移.
        警戒条件:         一种布尔表达式。在接收到事件触发器而触发转移时,将对该表达式求值;如果该表达式求值结果为 True,则说明转移符合触发条件;如果该表达式求值结果为False,则不触发转移。如果没有其他转移可以由同一事件来触发,该事件就将被丢弃。 
        操作:              可执行的、不可分割的计算过程,该计算可能直接作用于拥有状态机的对象,也可能间接作用于该对象可见的其他对象。
        目标状态(可选):          在完成转移后被激活的状态。
        参数:              转移可能有参数,这个参数为事件触发器的事件方法的参数
 
事先弄清楚这段说明是很重要的,因为我们的模型,我们的元数据都来源于需求问题的描述.

计划
      一个简单的入门系列计划大致包含几下几步:
      1. 创建一个简单的DSL模型
      2. 创建我们的元数据模型,包含状态机(StateMachine),状态(State),转移(Transition).可能实际的会对我们需求有些取舍,比如不考虑子状态等.
      3. 创建相对我们的元数据模型的图形展现.
      4.规范我们的模型和图.添加规则(Rule)和验证(Validation).
      5.在Visual Studio实验室环境中测试我们的Dsl项目
      6.改善我们的用户界面.
      7.针对我们限定的元数据针对一个框架创建代码生成.
      8.创建安装程序发布Dsl项目安装包

资源
      1.DSL Tools Lab     http://code.msdn.microsoft.com/DSLToolsLab  系列教程
      2.台湾微软Paul的DSL系列视频教程   http://msdn.microsoft.com/zh-tw/vstudio/cc963628.aspx
      3.Domain-Specific Development with Visual Studio DSL Tools   目前知道的唯一一本关于专门关于Vs.NET DSL的书,有对应的中文译本.
      4.VSX的一系列深入进阶  http://dotneteers.net/blogs/divedeeper/default.aspx?PageIndex=1

目录
相关文章
|
3月前
|
数据库 Windows
超详细步骤解析:从零开始,手把手教你使用 Visual Studio 打造你的第一个 Windows Forms 应用程序,菜鸟也能轻松上手的编程入门指南来了!
【8月更文挑战第31天】创建你的第一个Windows Forms (WinForms) 应用程序是一个激动人心的过程,尤其适合编程新手。本指南将带你逐步完成一个简单WinForms 应用的开发。首先,在Visual Studio 中创建一个“Windows Forms App (.NET)”项目,命名为“我的第一个WinForms 应用”。接着,在空白窗体中添加一个按钮和一个标签控件,并设置按钮文本为“点击我”。然后,为按钮添加点击事件处理程序`button1_Click`,实现点击按钮后更新标签文本为“你好,你刚刚点击了按钮!”。
230 0
|
NoSQL 编译器 C语言
Visual Studio Code (VS Code) – C++ 入门
基于 Visual Studio Code 官方文档的全面的、具体的入门级教程
405 1
Visual Studio Code (VS Code) – C++ 入门
|
IDE 程序员 开发工具
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(二)
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(二)
|
移动开发 IDE Java
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(一)
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略
IDE之VS:Visual Studio的简介(包括 VS2013、VS2015、VS2017、VS2019)、安装、入门、使用方法之详细攻略(一)
|
JavaScript Java API
Visual Studio 2015 和 Apache Cordova 跨平台开发入门
原文:Visual Studio 2015 和 Apache Cordova 跨平台开发入门(一) 基于 Windows 10 的 Visual Studio 2015 跨平台的应用开发主要分为基于Visual Studio 安装 Xamarin 扩展的跨Android、iOS 和 Windows的...
1836 0
|
开发工具 uml C++
下一篇
无影云桌面