Microsoft Visual Studio SDK DSL 工具 - 有认真的人吗?
-
21-08-2019 - |
题
我们正在考虑使用 Microsoft DSL 工具包来创建一些抽象设计器。我已经做了一些 POC,但想得到一些意见。
这里有人可以分享他们使用 Microsoft DSL Toolkit 和 T4 的经验吗?此外,任何指向开源 DSL 项目的指针都会有所帮助 - 例如。Microsoft Service Factory 建模版本严重依赖 DSL 工具包。
由于 OSLO/Quadrant 需要一些时间才能发布,我认为我们唯一的选择就是依赖 Microsoft DSL 设计器。(请参阅 Kieth 的博客)
另外,以下是我已经掌握的有关 DSL 的一些信息:
解决方案
我们在 DSL 方面做了相当多的工作,其中有一些供内部和基于客户的顾问使用,尽管我并不是在这些 DSL 方面做了大量工作的。一旦你完成了建模(不小的壮举),我会说这些都是很棒的工具。
不幸的是,我无法向您指出任何开源项目,而且我要补充一点,启动并运行一个不平凡的 DSL 的投资相当大,但是如果您正确使用它们,那么生产力的提升将是令人印象深刻的。
编辑 - 经过几年的经验,我做出以下观察:
- VS DSL 的大图视觉性能较差,您需要将模型元素折叠起来(隐藏/显示)
- 具有许多互连线的大图很难导航(布局很难)
- 大型模型对于代码生成等性能足够,时间主要花在反序列化上(如预期)
- 由于 GUID 数量众多,模型比较很困难
- 良好的开发人员体验需要对开箱即用的属性对话框进行大量开发。
- 可以对模型进行加密以保护 IP,这使得以后的比较变得极其困难(但对于所有加密文件都是如此。)
其他提示
在除了上述以外, 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
)