Frage

Wir erwägen Microsoft DSL-Toolkit einige abstrakte Designer für die Erstellung. Ich habe schon einige POCs, möchte aber einige Meinungen auf derselben erhalten.

hier Jede ihre Erfahrungen in der Zusammenarbeit mit Microsoft DSL Toolkit und T4 zu teilen? Auch, um alle Hinweise Open-Source-DSL-Projekte helfen - zB. Microsoft Service Factory Modellierung Ausgabe stark setzt auf DSL-Toolkit.

Als OSLO / Quadrant wird einige Zeit dauern frei zu bekommen, ich denke, die einzige Möglichkeit, die wir haben, ist auf Microsoft DSL-Designer verlassen. ( Siehe Kieth Blog auf demselben )

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

1 - A Nice Lab in MSDN auf DSL Tools

2 - eine Liste von Projekten in Codeplex DSL Toolkit

War es hilfreich?

Lösung

Wir haben viel Arbeit mit der DSLs getan und haben eine Reihe von ihnen im Hause und Client-basierten Berater Gebrauch, obwohl es nicht ich hat die meiste Arbeit mit ihnen getan hat. Sobald Sie die Modellierung (keine geringe Leistung) ausgebügelt haben würde ich sagen, dass diese große Werkzeuge sind.

Ich kann Ihnen nicht unfortuanetly an beliebigen Open-Source-Projekte zeigen, und ich will, dass die Investitionen in immer eine nicht triviale DSL addieren und läuft mit ist recht groß, aber wenn man sie rechts und dann die Steigerung der Produktivität ist beeindruckend bekommen.

Bearbeiten - nach einigen Jahren Erfahrung, die ich mache die folgenden Beobachtungen :

  1. Die VS DSLs haben schlechte Sehleistung große Diagramme, müssen Sie sich die Modellelemente falten (hide / show)
  2. großes Diagramme mit vielen Verbindungsleitungen sind schwer zu navigieren (Layouts sind hart)
  3. Große Modelle durchführen ausreichend für die Code-gen usw., mit der Zeit meist auf Deserialisation genommen (wie erwartet)
  4. Modellvergleich ist schwierig aufgrund der großen Anzahl von GUIDs
  5. Ein guter Entwickler Erfahrung erfordert viel Entwicklungsarbeit über die aus den Box Eigenschaftsdialoge.
  6. Modelle können verschlüsselt werden, um IP zu schützen, macht dieser Vergleich später extrem hart (aber das gilt für alle verschlüsselten Dateien.)

Andere Tipps

Ich habe bei der Verwendung des Visual Studio DSL-Toolkit aussieht. Letztendlich fand ich diese Werkzeuge weit einschnürenden zu sein. Um eine GUI zu benötigen, ohne Möglichkeit, eine darunter liegende Text Grammatik leicht zu beschreiben, scheint nur unzureichend zu mir. Ich brauche die Fähigkeit, leicht ohne GUI die DSL zu nutzen.

Oslo scheint in einer sehr seltsamen Richtung gehen zu werden, alle Metadaten für den DSL in einer SQL-DB speichern. Das scheint nur fremd für mich, und sicherlich Dinge verlangsamen kann nach unten, vor allem, wenn Sie eine schnelle IDE-Integration wollen. Zwar habe ich sah nicht tief hinein, so kann es besser sein, als mein Eindruck davon.

Als beiseite, ich implementiert kürzlich einen DSL mit Antlr . Sie können meinen Beitrag als Antwort auf eine Frage auf SO über das hier

Zusätzlich zu dem oben genannten, dem NORMA Werkzeug für Object -Role Modellierung basiert auf den DSL-tools gebaut. Es ist ein sehr anspruchsvolles Beispiel dafür, was mit ihnen gemacht werden, und zeigt mit Hilfe von XML-Transformationen für Modelltransformation und Code-Generierung.

Ich bin auf jeden Fall eine ernsthafte Nehmer. Ive kürzlich eine dsl orderprocesses für eine orderingsystem zu modellieren. Wir verwenden eine Windows, die das zu webservices verbindet, auf deren Basis processtatus eine bestimmte Zeile hat und ändert dann den Status basierend auf dem Ergebnis (Next, Fehler, Denial). Es war sehr zeitraubend, dass die db-Tabelle manuell zu bearbeiten, so habe ich eine Sprache und Generatoren für SQL-Code.

Ich muss überprüfen, ob ich bin keinen Code aus dem Projekt schreiben erlaubt, aber ich poste die Struktur DB, so dass Sie verstehen, warum die manuell es ist schwer tun bearbeiten. Ich habe für ca. in Daten setzen. 10 orderprocesses mit 5-20 Schritten jeweils mit Aktionen und alles (ProcessActionId ist ein refrence zu einem 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
)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top