質問

私が取り組んでいるアプリケーション スキャフォールディング プロジェクトでは、を使用するかどうかを決定しようとしています。 オスロ, T4 または コードダム コードを生成するため。私たちの目標は、依存関係を最小限に抑え、ユーザー ストーリーからドメイン駆動設計のコード生成を推進することです。最初のステップはユーザー ストーリーからテストを作成することですが、ドメインの専門家がさまざまなメディア (例:カスタム アプリ、Word など)、ストーリーからテストを生成します。

これまでに私が知っていること:

  1. CodeDom には .NET が必要ですが、出力できるのは .NET クラス ファイルのみです (例:.cs、.vb)。難易度はかなり高いです。
  2. T4 には CodeDom と VS Standard+ が必要です。難易度はかなり妥当で、特に T4 ツールボックス.
  3. オスロはとても新しいです。依存関係についてはわかりませんが、少なくとも .NET 3.5 を使用しているはずだと思います。また、コード生成能力や新しい文法を追加する複雑さについてもわかりません。ただし、ドメインの専門家であれば、Intellipad でユーザー ストーリーを非常に簡単に作成できるでしょう。また、Word のストーリーを MGrammar に変換するのが簡単かどうかもわかりません。

あなたの考え、経験などは何ですか?上記のツールのいずれかを使用して。私たちは Microsoft またはオープンソース ツールを使い続けたいと考えています。

役に立ちましたか?

解決

T4 を選択する - 簡単な決定です。

  • Oslo は新しすぎるし、ツールも未加工すぎて、eval のみのテクノロジ以外の何ものにもなりません
  • 実行時に CLR クラスを生成する必要があり、生成された出力への簡単な変更を犠牲にする場合には、CodeDOM が強力です。
  • T4 (T4 ツールキットを使用) は、使いやすい汎用コード生成ツールです。これまでのところ唯一の問題は、ビルド時の統合です。

他のヒント

一般的に、私は完全なモデリング/コーディング物語の一部として、コード生成を参照してください話します。これは、配管の大半が行われている一般的なフレームワークを伴うべきです。維持し、拡張するために、明確に定義された拡張ポイントまたはフックとのまともなフレームワークはずっと良くなるのに対し、私の意見では、巨大なクラスを生成するために有用ではありません。

あなたはそれXMLまたはオスロドメイン言語を、ユーザーストーリーのためにいくつかの正式な言語を定義する必要があります。オスロは、オスロのツールを学ぶために、あなたのドメインの専門家を必要とします。あなたは、Word + XMLを使用することができます。そして、XSLTやLINQのを経由して、もちろん、発電機を駆動するために使用することができますが埋め込まれたXMLスキーマで、Wordで格好良いテンプレートを定義し、物語が書かれた後、あなたは、正式なXMLのsyntax.ThisのXMLにWordからそれを得ることができます。

のCodeDOMは強力ではなく、面倒です。これは私見使いやすいソリューションではありません、それは本当のテンプレートをサポートしていません。

私はT4との経験がないが、そのテンプレート機能があらかじめされます。

オスロ製品は、確かに非常に新しいです.NET 4.0、ランタイム環境が必要です。それはまだ唯一のCTPです。私は、データベースの世代の話についていくつかの疑問を持っているが、それは、非常に強力な環境です。

この情報がお役に立てば幸いです。

さて、オスロはリストに適合していません。それはこれまでのところ、コード生成の物語を持っていません。だから、T4に固執します。

オスロではないあなたのためのコードを生成する意図を持っています。あなたは、データに応じて、その動作を変更し、ランタイム(例えばC#プログラム)を作成する必要があります。あなたは、インターネットブラウザのようにそれを見ることができます。

私はRINEが言及ようオスロは、.NET 4.0が必要であることを信じていません。アバナードオランダでのインターンシップのために私はオスロMSchemaとMGrammarsとC#3.5のランタイムを作成しています。与えられたデータに依存して、WCFサービスを(発生しない)と、それらを実行して作成されます。

オスロには興味深い応用例がいくつかあります

  • 「新しい LDAP」System.Identity、詳細は PDC セッション ビデオで http://microsoftpdc.com/Sessions/SVC28
  • System.Modelling (私はそう思います) Microsoft.UML2。メソッド、クラス、モジュールなどに関する情報をプッシュできます。リポジトリで分析し、レポートを作成します。たとえば、2 つのビルド間で追加/削除されたメソッドを含むレポートを作成します。 http://microsoftpdc.com/Sessions/SVR19
  • そしてもちろんモデリングも
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top