2008-12-15 10 views
10

Wir denken über Microsoft DSL Toolkit für die Erstellung einiger abstrakter Designer nach. Ich habe schon einige POCs gemacht, möchte aber gerne ein paar Meinungen dazu bekommen.Microsoft Visual Studio SDK DSL-Tools - Jeder ernsthafte Nehmer?

Jeder hier, um ihre Erfahrungen mit Microsoft DSL Toolkit und T4 zu teilen? Auch Hinweise auf Open-Source-DSL-Projekte helfen - z. Die Microsoft Service Factory-Modellierungsversion verlässt sich stark auf das DSL-Toolkit.

Da OSLO/Quadrant einige Zeit dauern wird, um veröffentlicht zu werden, denke ich, dass die einzige Option, die wir haben, ist, auf Microsoft DSL-Designer zu setzen. (See Kieth's blog on the same)

Auch hier einige Informationen, die ich bereits auf DSL habe:

1 - A Nice Lab in MSDN on DSL tools

2 - A List of Projects in Codeplex using DSL toolkit

+0

Ich versuche zu verstehen, wie das alles funktioniert. Müssen Benutzer eine Lizenz für Visual Studio haben, um dann Ihre DSL zu verwenden? – TimothyP

+1

Laden Sie Visual Studio SDK herunter, und installieren Sie, um ein DSL-Paket zu erstellen. Ein DSL-Paket ist wie jedes andere VS-Paket. Sie benötigen einen Paketlade-Schlüssel zum Bereitstellen. http://msdn.microsoft.com/en-us/library/bb165795(VS.80).aspx – amazedsaint

+1

AFAIK alle Visual Studio UML-Tools sind mit dem öffentlichen Modeling & Visualization SDK erstellt ... das ist ein ziemlich ernsthafter Nehmer – Schneider

Antwort

5

Wir erhebliche Arbeit mit der DSLs getan haben und haben eine Reihe von sie für den internen und kundenbasierten Beratergebrauch, obwohl es nicht mich hat, wer die meiste Arbeit mit ihnen getan hat. Sobald Sie die Modellierung ausgebügelt haben (keine kleine Leistung), würde ich sagen, dass dies großartige Werkzeuge sind.

Ich kann Sie nicht auf irgendwelche Open-Source-Projekte leider nicht hinweisen, und ich werde hinzufügen, dass die Investition in eine nicht triviale DSL zu erreichen ist ziemlich groß, aber wenn Sie sie richtig dann ist der Produktivitätsschub beeindruckend.

bearbeiten - nach einigen Jahren Erfahrung mache ich die folgenden Beobachtungen:

  1. Die VS DSLs haben schlechte Sehleistung große Diagramme, müssen Sie sich die Modellelemente falten (hide/show)
  2. große Diagramme mit vielen Verbindungslinien sind schwer zu navigieren (Layouts sind schwer)
  3. Große Modelle funktionieren ausreichend für Code gen usw., mit der Zeit, die meistens für die Deserialisierung benötigt wird (wie erwartet)
  4. Modell der Vergleich ist wegen der großen Anzahl von GUIDs schwierig
  5. Eine gute Entwicklererfahrung erfordert eine Menge Entwicklung über die vordefinierten Eigenschaften-Dialogfelder.
  6. Modelle können IP zu schützen verschlüsselt werden, macht dieser Vergleich später extrem hart (aber das gilt für alle verschlüsselten Dateien.)
0

Ich bin auf jeden Fall eine ernsthafte Nehmer. Ivé hat kürzlich einen DSL erstellt, um Bestellprozesse für ein Bestellsystem zu modellieren. Wir verwenden einen Windowsservice, der eine Verbindung zu verschiedenen Webservices basierend auf dem Prozessstatus einer bestimmten Zeile herstellt und dann den Status basierend auf dem Ergebnis (Next, Error, Denial) ändert. Es war sehr zeitaufwendig, diese db-Tabelle manuell zu bearbeiten, also habe ich eine Sprache und Generatoren für SQL-Code erstellt.

Ich muss überprüfen, ob ich Code aus dem Projekt veröffentlichen darf, aber ich poste die DB-Struktur, damit Sie verstehen, warum es hart ist, das manuell zu bearbeiten. Ich muss Daten für ca. 10 Bestellvorgänge mit je 5-20 Schritten mit Aktionen und allem (ProcessActionId ist ein Verweis auf einen 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 
) 
+0

Klingt cool. Tatsächlich haben wir auch so etwas gemacht, hauptsächlich um Klick-Prototypen und DTO-Objekte zu generieren. – amazedsaint

+3

Natürlich könnten Sie einfach einen ORM verwenden, um den gesamten Repository-Code zu generieren. –

2

Zusätzlich zu den oben wird das NORMA Werkzeug für Objekt-Rollenmodellierung auf den DSL-Tools gebaut.Es ist ein sehr ausgeklügeltes Beispiel dafür, was mit ihnen getan werden kann, und demonstriert die Verwendung von XML-Transformationen für die Modelltransformation und Codegenerierung.

4

Ich habe mir die Verwendung des Visual Studio DSL-Toolkits angesehen. Letzten Endes fand ich diese Werkzeuge zu eng. Um eine GUI zu benötigen, ohne die Fähigkeit, eine zugrundeliegende Textgrammatik einfach zu beschreiben, scheint mir nur unzureichend. Ich benötige die Fähigkeit, die DSL ohne eine GUI einfach zu benutzen.

Oslo scheint in eine sehr seltsame Richtung zu gehen und speichert alle Metadaten für die DSL in einer SQL DB. Das scheint mir fremd zu sein und kann die Dinge sicherlich verlangsamen, besonders wenn Sie eine schnelle IDE-Integration wünschen. Zugegebenermaßen habe ich mich nicht intensiv damit beschäftigt, also ist es vielleicht besser als mein Eindruck davon.

Nebenbei habe ich vor kurzem ein DSL mit Antlr implementiert. Sie können meinen Beitrag als Antwort auf eine Frage zu SO darüber finden here

+0

@Darien: Diese Frage war speziell das DSL-Toolkit. –

+0

Ahh Sie haben Recht, ich habe den Teil der Frage über Open-Source-Projekte falsch verstanden. Post Körper delted –

+0

Eigentlich werde ich es bearbeiten, um mehr meine Meinung über die Werkzeuge MS hat zu reflektieren. –