.net Microsoft Visual Studio SDK DSL工具-有认真的使用者吗?
我们正在考虑使用MicrosoftDSL工具包来创建一些抽象设计器。我已经做了一些POC,但想得到一些相同的意见 有人在这里分享他们使用Microsoft DSL Toolkit和T4的经验吗?此外,任何指向开源DSL项目的指针都会有所帮助——例如,Microsoft Service Factory建模版严重依赖DSL工具包 由于奥斯陆/Quadrant需要一段时间才能发布,我认为我们唯一的选择就是依赖微软的DSL设计器。() 此外,以下是我已经掌握的有关DSL的一些信息: 1-.net Microsoft Visual Studio SDK DSL工具-有认真的使用者吗?,.net,visual-studio,dsl,dsl-tools,visual-studio-sdk,.net,Visual Studio,Dsl,Dsl Tools,Visual Studio Sdk,我们正在考虑使用MicrosoftDSL工具包来创建一些抽象设计器。我已经做了一些POC,但想得到一些相同的意见 有人在这里分享他们使用Microsoft DSL Toolkit和T4的经验吗?此外,任何指向开源DSL项目的指针都会有所帮助——例如,Microsoft Service Factory建模版严重依赖DSL工具包 由于奥斯陆/Quadrant需要一段时间才能发布,我认为我们唯一的选择就是依赖微软的DSL设计器。() 此外,以下是我已经掌握的有关DSL的一些信息: 1- 2-我们已经对
2-我们已经对DSL做了大量的工作,并且有许多DSL供内部和基于客户的顾问使用,尽管并不是我对DSL做了大部分工作。一旦你完成了建模(这不是一个小壮举),我会说这些都是很棒的工具 不幸的是,我不能向您指出任何开源项目,我要补充的是,在启动和运行一个非琐碎的DSL方面的投资是相当大的,然而,如果您正确地实现了这些项目,那么生产力的提升将是令人印象深刻的 编辑-经过几年的经验,我做了以下观察:
我绝对是个认真的接受者。Ivé最近制作了一个dsl来为orderingsystem建模OrderProcess。我们使用一个windowsservice,它连接到不同的Web服务,基于特定行的ProcessStatus,然后根据结果更改状态(下一步,错误,拒绝)。手动编辑db表非常耗时,所以我为sql代码编写了一种语言和生成器 我必须检查是否允许我发布项目中的任何代码,但我发布了DB结构,这样您就可以理解为什么手动编辑很困难。我必须为aprox输入数据。10个OrderProcess,包含5-20个步骤,每个步骤都包含操作和所有内容(ProcessActionId是对Web服务的引用)
除上述内容外,对象角色建模工具还基于DSL工具构建。这是一个非常复杂的示例,演示了如何使用XML转换进行模型转换和代码生成。我已经介绍了visual studio DSL工具包的使用。最终,我发现这些工具还远远不够。 在我看来,需要一个GUI,而不需要任何能够轻松描述底层文本语法的能力是不够的。我需要能够在没有GUI的情况下轻松使用DSL Oslo似乎朝着一个非常奇怪的方向发展,将DSL的所有元数据存储在sqldb中。这对我来说似乎无关紧要,而且肯定会减慢速度,特别是如果您想要快速集成IDE的话。诚然,我没有深入研究它,所以它可能比我对它的印象要好
另外,我最近使用实现了一个DSL。你可以找到我的帖子,作为对关于它的一个问题的回答我试图了解这一切是如何运作的。用户是否需要拥有Visual Studio许可证才能使用您的DSL?若要创建DSL包,请下载并安装Visual Studio SDK。DSL包与任何其他VS包一样,您需要一个包加载密钥来部署。所有VisualStudioUML工具都是使用公共建模和可视化SDK构建的……这是一个非常严肃的话题,听起来很酷。事实上,我们也做过类似的事情,主要是为了生成点击原型和dto对象。当然,你可以简单地使用ORM来生成所有存储库保存代码。@Darien:这个问题是专门关于DSL工具包的。啊,你说得对,我没有参与关于开源项目的问题。Post body Delted实际上,我将对其进行编辑,以反映我对MS所拥有工具的更多看法。@Darien:SQL Server DB只是Oslo的目标之一。您还可以获得AST或“MSchema”。DB(SQLServerExpress==free)对于模型及其实例应该在同一位置对多个涉众可用的情况非常方便。示例:应用程序和服务的配置。OP询问了关于开源的问题。NORMA的来源在这里:有197个域类,这是一项重要的工作。
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
)