程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Visual Studio DSL入門 2 --- 需求

Visual Studio DSL入門 2 --- 需求

編輯:關於.NET

相信如果看過一上篇你已經對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

出處:http://lonely7345.cnblogs.com/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved