我们正在考虑使用 Microsoft DSL 工具包来创建一些抽象设计器。我已经做了一些 POC,但想得到一些意见。

这里有人可以分享他们使用 Microsoft DSL Toolkit 和 T4 的经验吗?此外,任何指向开源 DSL 项目的指针都会有所帮助 - 例如。Microsoft Service Factory 建模版本严重依赖 DSL 工具包。

由于 OSLO/Quadrant 需要一些时间才能发布,我认为我们唯一的选择就是依赖 Microsoft DSL 设计器。(请参阅 Kieth 的博客)

另外,以下是我已经掌握的有关 DSL 的一些信息:

1 - MSDN 中关于 DSL 工具的一个不错的实验室

2 - Codeplex 中使用 DSL 工具包的项目列表

有帮助吗?

解决方案

我们在 DSL 方面做了相当多的工作,其中有一些供内部和基于客户的顾问使用,尽管我并不是在这些 DSL 方面做了大量工作的。一旦你完成了建模(不小的壮举),我会说这些都是很棒的工具。

不幸的是,我无法向您指出任何开源项目,而且我要补充一点,启动并运行一个不平凡的 DSL 的投资相当大,但是如果您正确使用它们,那么生产力的提升将是令人印象深刻的。

编辑 - 经过几年的经验,我做出以下观察:

  1. VS DSL 的大图视觉性能较差,您需要将模型元素折叠起来(隐藏/显示)
  2. 具有许多互连线的大图很难导航(布局很难)
  3. 大型模型对于代码生成等性能足够,时间主要花在反序列化上(如预期)
  4. 由于 GUID 数量众多,模型比较很困难
  5. 良好的开发人员体验需要对开箱即用的属性对话框进行大量开发。
  6. 可以对模型进行加密以保护 IP,这使得以后的比较变得极其困难(但对于所有加密文件都是如此。)

其他提示

我已经看过了使用Visual Studio DSL工具包。最终,我发现这些工具是远远收缩。 要必须有图形用户界面,而不便于描述一个基本的文本语法任何能力,只是似乎不够给我。我需要方便地使用DSL没有GUI的能力。

奥斯陆似乎很奇怪的方向发展,存储用于在SQL DB中的DSL所有元数据。这似乎只是多余的我,一定会慢下来,特别是如果你想快速的IDE集成。诚然,我没有看过深入到它,所以它可能比我的印象也更好。

预留作为一个,我最近实施使用DSL ANTLR的。你可以找到我的文章,以一个问题,关于SO它的此处

在除了上述以外, NORMA 工具为对象-Role模型是建立在DSL工具。这是什么可以跟他们做一个非常复杂的例子,使用XML来变换为模型转换和代码生成演示。

I'm绝对严重接受者。香港专业教育学院最近做了一个DSL为一个orderingsystem模型orderprocesses。我们使用连接到不同的Web服务在此基础上processtatus特定行有,然后改变根据结果(下一页,错误拒绝)状态的windowsservice。这是非常耗时的手动编辑分贝表,所以我为SQL代码语言和发电机。

我要检查,如果I'm允许从项目发布任何代码,但我张贴DB结构,所以你可以理解为什么是手动it's很难做编辑。我必须把数据aprox的。 10个orderprocesses用5-20步骤每个动作和一切(ProcessActionId是refrence到一个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
)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top