Microsoft Visual Studio SDK DSL 工具 - 有认真的人吗?
我们正在考虑使用 Microsoft DSL 工具包来创建一些抽象设计器。 我已经做了一些 POC,但想得到一些意见。
这里有人可以分享他们使用 Microsoft DSL Toolkit 和 T4 的经验吗? 此外,任何指向开源 DSL 项目的指针都会有所帮助 - 例如。 Microsoft Service Factory 建模版本严重依赖 DSL 工具包。
由于 OSLO/Quadrant 需要一些时间才能发布,我认为我们唯一的选择就是依赖 Microsoft DSL 设计器。 (请参阅 Kieth 的博客)
此外,这里还有一些我已经掌握的有关 DSL 的信息:
We are considering Microsoft DSL toolkit for creating some abstract designers. I already did some POCs, but would like to get some opinions on the same.
Any one here to share their experiences working with Microsoft DSL Toolkit and T4? Also, any pointers to open source DSL projects will help - Eg. Microsoft Service Factory modeling edition is heavily relying on DSL toolkit.
As OSLO/Quadrant will take some time to get released, I think the only option we have is to rely on Microsoft DSL designer. (See Kieth's blog on the same)
Also, here is some information I already have on DSL:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我们在 DSL 方面做了相当多的工作,其中有一些供内部和基于客户的顾问使用,尽管我并不是在这些 DSL 方面做了大量工作的。 一旦你完成了建模(不小的壮举),我会说这些都是很棒的工具。
不幸的是,我无法向您指出任何开源项目,而且我要补充一点,启动并运行一个不平凡的 DSL 的投资相当大,但是如果您正确使用它们,那么生产力的提升将是令人印象深刻的。
编辑 - 经过几年的经验,我做出以下观察:
We have done considerable work with the DSLs and have a number of them for in house and client based consultant use, though it has not me who has done most work with them. Once you have ironed out the modeling(no small feat) I would say that these are great tools.
I cannot point you at any open source projects unfortuanetly, and I will add that investment in getting a non trivial DSL up and running with is quite large, however if you get them right then the productivity boost is impressive.
edit - after a few years experience I make the following observations:
我研究了 Visual Studio DSL 工具包的使用。 最终,我发现这些工具远远不够。
需要一个 GUI,但没有任何能力来轻松描述底层文本语法,对我来说似乎是不够的。 我需要能够在没有 GUI 的情况下轻松使用 DSL。
Oslo 似乎正朝着一个非常奇怪的方向发展,将 DSL 的所有元数据存储在 SQL DB 中。 这对我来说似乎是无关紧要的,而且肯定会减慢速度,特别是如果您想要快速的 IDE 集成。 诚然我没有深入研究它,所以它可能比我的印象要好。
顺便说一句,我最近使用 Antlr 实现了 DSL。 您可以找到我的帖子作为对有关此问题的答复 这里
I have looked at the use of the visual studio DSL toolkit. Ultimately, I found those tools to be far to constricting.
To require a GUI, without any ability to easily describe an underlying textual grammar, just seems inadequate to me. I require the ability to easily use the DSL without a GUI.
Oslo seems to be going in a very strange direction, storing all metadata for the DSL in a SQL DB. That just seems extraneous to me, and certainly can slow things down, especially if you want fast IDE integration. Admittedly I have not looked deeply into it, so it may be better than my impression of it.
As an aside, I recently implemented a DSL using Antlr. You can find my post as a response to a question on SO about it here
除了上述之外,还有用于对象角色建模的 NORMA 工具是建立在 DSL 工具之上的。 这是一个非常复杂的示例,说明了可以使用它们做什么,并演示了如何使用 XML 转换进行模型转换和代码生成。
In addition to the above, the NORMA tool for Object-Role Modeling is built on the DSL Tools. It's a very sophisticated example of what can be done with them, and demonstrates using XML Transforms for model transformation and code generation.
我绝对是一个认真的接受者。 Ivé 最近制作了一个 dsl 来为订购系统的订购流程建模。 我们使用一个 Windows 服务,该服务根据特定行的进程状态连接到不同的 Web 服务,然后根据结果(下一步、错误、拒绝)更改状态。 手动编辑数据库表非常耗时,因此我为 sql 代码制作了一种语言和生成器。
我必须检查是否允许我发布项目中的任何代码,但我发布了数据库结构,以便您可以理解为什么很难手动编辑它。 我必须输入 aprox 的数据。 10 个订单流程,每个流程有 5-20 个步骤,其中包含操作和所有内容(ProcessActionId 是对 Web 服务的引用)。
I´m definitely a serious taker. Ivé recently made a dsl to model orderprocesses for a orderingsystem. We use a windowsservice that that connects to different webservices based on which processtatus a specific row has and then changes the status based on the outcome (Next,Error,Denial). It was very timeconsuming to edit that db-table manually, so I made a language and generators for sql code.
I must check if I´m allowed to post any code from the project but I post the DB structure so you can understand why it´s hard do edit that manually. I have to put in data for aprox. 10 orderprocesses with 5-20 steps each with actions and everything (ProcessActionId is a refrence to a webservice).