views:

1157

answers:

4

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

+1  A: 

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.

Preet Sangha
A: 

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
)
Glenn
Sounds cool. Infact, we've also done something like this, mainly for generating click through prototypes and dto objects
amazedsaint
Of course, you could simply use an ORM to generate all the Repository saving code....
Mitch Wheat
A: 

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.

John Saunders
+1  A: 

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

Darien Ford
@Darien: this question was specifically about the DSL Toolkit.
John Saunders
Ahh you are right, I misstook the part of the question about open source projects. Post body delted
Darien Ford
Actually, I'll edit it to reflect more my opinion of the tools MS does have.
Darien Ford
@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.
John Saunders