Microsoft Visual Studio SDK DSL Tools - Any serious takers?
Asked Answered
L

4

10

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:

1 - A Nice Lab in MSDN on DSL tools

2 - A List of Projects in Codeplex using DSL toolkit

Locular answered 15/12, 2008 at 19:53 Comment(3)
I'm trying to understand how all this works. Do users need to have a license for Visual Studio then to use your DSL?Alliber
To create a DSL package, download and install Visual Studio SDK. A DSL Package is like any other VS Package, you need a Package Load Key to deploy. msdn.microsoft.com/en-us/library/bb165795(VS.80).aspxLocular
AFAIK all of the Visual Studio UML tools are built with the public Modelling & Visualization SDK...that's a pretty serious takerSignore
O
5

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:

  1. The VS DSLs have bad visual performance large diagrams, you need fold the model elements away (hide/show)
  2. large diagrams with many interconnecting lines are hard to navigate (layouts are hard)
  3. Large Models perform adequately for code gen etc, with the time taken mostly on deserialisation (as expected)
  4. Model comparison is difficult due to the large number of GUIDs
  5. A good developer experience requires a lot of development over the out of the box properties dialogs.
  6. Models can be encrypted to protect IP, this makes comparison later extremely hard (but this is true for all encrypted files.)
Ostensorium answered 18/3, 2009 at 3:34 Comment(0)
U
4

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

Upholster answered 12/7, 2009 at 3:5 Comment(4)
@Darien: this question was specifically about the DSL Toolkit.Peanut
Ahh you are right, I misstook the part of the question about open source projects. Post body deltedUpholster
Actually, I'll edit it to reflect more my opinion of the tools MS does have.Upholster
@Darien: a SQL Server DB is only one of the targets for Oslo. You can also get the AST or the "MSchema". DB (SQL Server Express == free) is convenient for the case where the model and the instances of it should be available in the same place, to multiple stakeholders. Example: configuration of applications and services.Peanut
P
2

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.

Peanut answered 12/7, 2009 at 2:30 Comment(1)
The OP asked about open source. The source for NORMA is here: github.com/ormsolutions/NORMA With 197 DomainClasses, it's a substantial piece of work.Merengue
O
0

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).

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
)
Oceangoing answered 19/3, 2009 at 12:17 Comment(2)
Sounds cool. Infact, we've also done something like this, mainly for generating click through prototypes and dto objectsLocular
Of course, you could simply use an ORM to generate all the Repository saving code....Hinkley

© 2022 - 2024 — McMap. All rights reserved.