中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

Visual Studio DSL 入門 2

     相信如果看過一上篇你已經(jīng)對vs.NET dsl有了一定的了解,接下來我們就來開始我們的這個(gè)系列的入門,Vs.NET Dsl在國內(nèi)可能使用的人少之又少,不過希望這個(gè)系列能夠使看到的人能夠?qū)sl有一定的了解,使之能夠成為產(chǎn)品方案選型時(shí)的一個(gè)參考,能夠?qū)﹂喿x的人有所幫助.

準(zhǔn)備環(huán)境
    由于vs.NET 2010并未正式發(fā)布,所以這一系列基于vs 2008 sp1進(jìn)行開發(fā),Dsl tools是包含在VSX當(dāng)中的,所以需要下載 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至今還沒有內(nèi)置T4編輯器,在vs 2010中也不會提供。
需求說明

    我們完成的這個(gè)簡單的Demo類似于UML中的狀態(tài)圖(Statechart Diagram),  這個(gè)狀態(tài)機(jī)由狀態(tài)(states)組成,各狀態(tài)由轉(zhuǎn)移(transitions)鏈接在一起。狀態(tài)是對象執(zhí)行某項(xiàng)活動或等待某個(gè)事件時(shí)的條件。轉(zhuǎn)移是兩個(gè)狀態(tài)之間的關(guān)系,它由某個(gè)事件觸發(fā),然后執(zhí)行特定的操作或評估并導(dǎo)致特定的結(jié)束狀態(tài)。
  狀態(tài)(State)的要素:
         名稱:    將一個(gè)狀態(tài)與其他狀態(tài)區(qū)分開來的文本字符串;狀態(tài)也可能是匿名的,這表示它沒有名稱。 
         分類:    狀態(tài)分為初始狀態(tài)(initial state)和結(jié)束狀態(tài)(end state).    
         進(jìn)入/退出操作:    在進(jìn)入和退出狀態(tài)時(shí)所執(zhí)行的操作。
         內(nèi)部轉(zhuǎn)移:        在不使?fàn)顟B(tài)發(fā)生變更的情況下進(jìn)行的轉(zhuǎn)移。
         子狀態(tài):          狀態(tài)的嵌套結(jié)構(gòu),包括不相連的(依次處于活動狀態(tài)的)或并行的(同時(shí)處于活動狀態(tài)的)子狀態(tài)。
         延遲的事件:      未在該狀態(tài)中處理但被延遲處理(即列隊(duì)等待由另一個(gè)狀態(tài)中的對象來處理)的一系列事件。 
   轉(zhuǎn)移(Transitions)的要素: 
        源狀態(tài):            轉(zhuǎn)移所影響的狀態(tài);如果對象處于源狀態(tài),當(dāng)對象收到轉(zhuǎn)移的觸發(fā)事件并且滿足警戒條件(如果有)時(shí),就可能會觸發(fā)輸出轉(zhuǎn)移。 
        事件觸發(fā)器:       使轉(zhuǎn)移滿足觸發(fā)條件的事件。當(dāng)處于源狀態(tài)的對象收到該事件時(shí)(假設(shè)已滿足其警戒條件),就可能會觸發(fā)轉(zhuǎn)移。 事件一般都有一個(gè)名稱,但是有些轉(zhuǎn)移沒有事件名稱,稱為自動或隱式轉(zhuǎn)移.
        警戒條件:         一種布爾表達(dá)式。在接收到事件觸發(fā)器而觸發(fā)轉(zhuǎn)移時(shí),將對該表達(dá)式求值;如果該表達(dá)式求值結(jié)果為 True,則說明轉(zhuǎn)移符合觸發(fā)條件;如果該表達(dá)式求值結(jié)果為False,則不觸發(fā)轉(zhuǎn)移。如果沒有其他轉(zhuǎn)移可以由同一事件來觸發(fā),該事件就將被丟棄。 
        操作:              可執(zhí)行的、不可分割的計(jì)算過程,該計(jì)算可能直接作用于擁有狀態(tài)機(jī)的對象,也可能間接作用于該對象可見的其他對象。
        目標(biāo)狀態(tài)(可選):          在完成轉(zhuǎn)移后被激活的狀態(tài)。
        參數(shù):              轉(zhuǎn)移可能有參數(shù),這個(gè)參數(shù)為事件觸發(fā)器的事件方法的參數(shù)
 
事先弄清楚這段說明是很重要的,因?yàn)槲覀兊哪P停覀兊脑獢?shù)據(jù)都來源于需求問題的描述.

計(jì)劃
      一個(gè)簡單的入門系列計(jì)劃大致包含幾下幾步:
      1. 創(chuàng)建一個(gè)簡單的DSL模型
      2. 創(chuàng)建我們的元數(shù)據(jù)模型,包含狀態(tài)機(jī)(StateMachine),狀態(tài)(State),轉(zhuǎn)移(Transition).可能實(shí)際的會對我們需求有些取舍,比如不考慮子狀態(tài)等.
      3. 創(chuàng)建相對我們的元數(shù)據(jù)模型的圖形展現(xiàn).
      4.規(guī)范我們的模型和圖.添加規(guī)則(Rule)和驗(yàn)證(Validation).
      5.在Visual Studio實(shí)驗(yàn)室環(huán)境中測試我們的Dsl項(xiàng)目
      6.改善我們的用戶界面.
      7.針對我們限定的元數(shù)據(jù)針對一個(gè)框架創(chuàng)建代碼生成.
      8.創(chuàng)建安裝程序發(fā)布Dsl項(xiàng)目安裝包

資源
      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   目前知道的唯一一本關(guān)于專門關(guān)于Vs.NET DSL的書,有對應(yīng)的中文譯本.
      4.VSX的一系列深入進(jìn)階  http://dotNETeers.NET/blogs/divedeeper/default.ASPx?PageIndex=1

NET技術(shù)Visual Studio DSL 入門 2,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日韩在线日韩 | 91中文字幕在线 | 欧美日韩国产一区 | 日韩在线观看中文字幕 | 欧美另类视频在线 | 91精品国模一区二区三区 | 亚洲欧洲精品成人久久奇米网 | 成年免费大片黄在线观看岛国 | 久久久区 | 国产三级在线观看播放 | 国产亚洲一区二区三区在线观看 | 国产欧美精品 | 欧洲免费视频 | 成人欧美一区二区三区黑人孕妇 | 欧美色图另类 | 午夜精品久久久久久 | 亚洲一区视频在线 | a级大片 | 国产精品久久久久久久久久久久久久 | 国产日韩精品一区 | 亚洲国产成人精品久久久国产成人一区 | 天天摸天天看 | 国产中文字幕在线 | 亚洲成av人片在线观看无码 | 精品国产乱码久久久久久a丨 | 久久99久久99久久 | 天天在线操 | 7777久久| 久久综合狠狠综合久久综合88 | 欧美一级在线观看 | 毛片一区二区三区 | 91视频一区二区 | 国产精品久久久久影院色老大 | 久久精品亚洲精品国产欧美 | 国产一在线观看 | 日本精品一区二区三区在线观看视频 | 在线中文字幕日韩 | 一级黄a视频 | 国产一区二区三区在线 | 日韩一级| 国产一级毛片精品完整视频版 |