2008-12-15 38 views
10

我們正在考慮創建一些抽象設計師的Microsoft DSL工具包。我已經做了一些POC,但想就此得到一些意見。Microsoft Visual Studio SDK DSL工具 - 任何嚴肅的接受者?

在這裏的任何人分享他們的經驗與微軟的DSL工具包和T4?另外,任何指向開源DSL項目的指針都會有所幫助 - 例如。 Microsoft Service Factory建模版嚴重依賴於DSL工具包。

由於OSLO/Quadrant需要一些時間才能發佈,我認爲我們唯一的選擇是依靠Microsoft DSL設計器。 (See Kieth's blog on the same

而且,這裏是一些信息,我已經在DSL:

1 - A Nice Lab in MSDN on DSL tools

2 - A List of Projects in Codeplex using DSL toolkit

+0

我想了解所有這些工作。用戶是否需要獲得Visual Studio許可證才能使用DSL? – TimothyP 2008-12-15 21:50:09

+1

要創建DSL包,請下載並安裝Visual Studio SDK。 DSL包與其他任何VS包一樣,需要部署包裝加載密鑰。 http://msdn.microsoft.com/en-us/library/bb165795(VS.80).aspx – amazedsaint 2008-12-16 07:57:23

+1

AFAIK所有的Visual Studio UML工具都是使用公共建模和可視化SDK構建的......這是一個非常嚴肅的接受者 – Schneider 2014-11-07 18:17:52

回答

5

我們已經做了大量工作,與DSL的,並有許多他們在內部和客戶的基礎上使用顧問,儘管我沒有和他們做過大部分工作。一旦你已經完成了建模(不是小的壯舉),我會說這些都是很棒的工具。

我不能指出你在任何開源項目中的表現,而且我將增加投入來獲得一個非常小的DSL,並且運行起來相當大,但是如果你正確地獲得它們,那麼生產力的提升是令人印象深刻的。

編輯 - 經過數年的經驗,我提出以下意見

  1. 的VS DSL的有不良的視覺表現大圖,你需要摺疊的模型元素遠(隱藏/顯示)
  2. 包含許多互連線的大圖很難導航(佈局很難)
  3. 大型模型適用於代碼gen等,主要用於反序列化的時間(如預期)
  4. 模型由於大量的GUID導致比較困難
  5. 良好的開發人員經驗需要通過開箱即用的屬性對話框進行大量開發。
  6. 模型可以被加密保護知識產權,這使得比較後非常努力(不過這是對所有加密文件真實。)
0

I'm絕對是一個嚴重的接受者。 Ivé最近做了一個dsl來爲訂單系統建模訂單流程。我們使用一個windows服務來連接到不同的Web服務,這個服務基於特定行的進程狀態,然後根據結果改變狀態(Next,Error,Denial)。這是非常費時的手動編輯db-table,所以我爲sql代碼編寫了一個語言和生成器。

我必須檢查我是否允許發佈項目中的任何代碼,但是我發佈了數據庫結構,因此您可以理解爲什麼手動編輯該數據庫非常困難。我必須輸入aprox的數據。 10個順序進程,每個進程5-20步,每個進程都有動作和一切(ProcessActionId是對web服務的引用)。

CREATE TABLE [dbo].[OrderProcessStep](
    [OrderProcessCode] [int] NOT NULL, 
    [PreviousProcessStatusCode] [int] NOT NULL, 
    [NextProcessStatusCode] [int] NULL, 
    [DenialProcessStatusCode] [int] NULL, 
    [ErrorProcessStatusCode] [int] NULL, 
    [ProcessActionId] [int] NULL, 
    [StepComment] [varchar](500) NOT NULL, 
    [SecondsToNext] [int] NULL, 
    [SecondsToError] [int] NULL, 
    [SecondsToDenial] [int] NULL, 
CONSTRAINT [PK_OrderProcess] PRIMARY KEY CLUSTERED 
(
    [OrderProcessCode] ASC, 
    [PreviousProcessStatusCode] ASC 
) 
2

除上述之外,用於對象角色建模的NORMA工具建立在DSL工具上。這是一個非常複雜的例子,它可以完成什麼,並演示如何使用XML轉換進行模型轉換和代碼生成。

4

我看了一下使用visual studio的DSL工具包。最終,我發現這些工具遠遠不夠緊縮。 想要一個圖形用戶界面,沒有任何能夠輕鬆描述底層文本語法的能力,對我來說似乎是不夠的。我需要能夠在沒有GUI的情況下輕鬆使用DSL。

奧斯陸似乎正走在一個非常奇怪的方向,將DSL的所有元數據存儲在SQL DB中。這對我來說似乎是無關緊要的,而且肯定可以減慢速度,特別是如果你想快速集成IDE的話。誠然,我沒有深入研究它,所以它可能比我對它的印象更好。

另外,我最近使用Antlr實現了一個DSL。你可以找到我的文章作爲對這個問題的答覆關於它here

相關問題