10

いくつかの抽象的なデザイナーを作成するためのMicrosoftDSLツールキットを検討しています。私はすでにいくつかのPOCを行いましたが、同じことについていくつかの意見を聞きたいと思います。

Microsoft DSL ToolkitとT4での作業経験を共有するためにここにいる人はいますか?また、オープンソースのDSLプロジェクトへのポインタが役立ちます-例:Microsoft Service Factoryモデリングエディションは、DSLツールキットに大きく依存しています。

OSLO / Quadrantがリリースされるまでには時間がかかるため、MicrosoftDSLデザイナーに依存するしか選択肢がないと思います。(同じ上のKiethのブログを参照してください

また、DSLに関して私がすでに持っているいくつかの情報があります:

1- DSLツールに関するMSDNの素敵なラボ

2- DSLツールキットを使用したCodeplexのプロジェクトのリスト

4

4 に答える 4

5

私たちはDSLでかなりの作業を行い、社内およびクライアントベースのコンサルタントが使用するために多くのDSLを使用していますが、ほとんどの作業を行ったのは私ではありません。モデリングを完成させたら(小さな偉業ではありません)、これらは素晴らしいツールだと思います。

残念ながら、オープンソースプロジェクトを紹介することはできません。重要なDSLを稼働させるための投資は非常に大きいですが、正しく実行すれば、生産性の向上は目覚ましいものになります。

編集-数年の経験の後、私は次の観察をします

  1. VS DSLは、大きな図の視覚的パフォーマンスが悪いため、モデル要素を折りたたむ必要があります(非表示/表示)
  2. 相互接続線が多い大きな図はナビゲートが困難です(レイアウトは困難です)
  3. 大規模なモデルは、コード生成などに対して適切に機能し、主に逆シリアル化に時間がかかります(予想どおり)
  4. GUIDの数が多いため、モデルの比較は困難です。
  5. 優れた開発者エクスペリエンスには、すぐに使用できるプロパティダイアログで多くの開発が必要です。
  6. モデルはIPを保護するために暗号化できます。これにより、後で比較することが非常に困難になります(ただし、これはすべての暗号化ファイルに当てはまります)。
于 2009-03-18T03:34:05.230 に答える
4

Visual Studio DSL ツールキットの使用について調べました。最終的に、私はこれらのツールが制限にほど遠いことを発見しました. 基礎となるテキスト文法を簡単に説明する能力なしに GUI を要求することは、私には不十分に思えます。GUI なしで DSL を簡単に使用できる機能が必要です。

Oslo は、DSL のすべてのメタデータを SQL DB に格納するという、非常に奇妙な方向に向かっているようです。それは私には関係のないことのように思えます。特に IDE との統合を迅速に行いたい場合は、速度が遅くなる可能性があります。確かに深く調べていないので、私の印象よりは良いかもしれません。

余談ですが、私は最近Antlrを使用して DSL を実装しました。ここで、SO に関する質問への回答として私の投稿を見つけることができます

于 2009-07-12T03:05:24.433 に答える
2

上記に加えて、オブジェクト役割モデリング用のNORMAツールは DSL ツール上に構築されています。これは、それらで何ができるかを示す非常に洗練された例であり、モデル変換とコード生成に XML 変換を使用する方法を示しています。

于 2009-07-12T02:30:02.370 に答える
0

私は間違いなく真剣です。Ivé は最近、注文システムの注文プロセスをモデル化するための DSL を作成しました。特定の行のプロセスステータスに基づいてさまざまな Web サービスに接続し、結果 (次、エラー、拒否) に基づいてステータスを変更する Windows サービスを使用します。その db テーブルを手動で編集するのは非常に時間がかかるため、SQL コード用の言語とジェネレーターを作成しました。

プロジェクトからコードを投稿することが許可されているかどうかを確認する必要がありますが、手動で編集するのが難しい理由を理解できるように、DB 構造を投稿します。おおよそのデータを入力する必要があります。アクションとすべてを含む 5 ~ 20 のステップを持つ 10 の注文プロセス (ProcessActionId は Web サービスへの参照です)。

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
)
于 2009-03-19T12:17:24.137 に答える