6

私はドメイン モデルの可視性に関する興味深い議論に参加していましたが、ここにいる人々が適切なガイダンスを持っているかどうか疑問に思っていました。

  • MDA についての私の理解では、アプリケーション レイヤーと層全体にドメイン モデルを公開する必要はありません。
  • その理由は、ドメイン モデルへの変更がアプリケーション全体に影響を与えるためです。
  • 賢明なことは、実際のモデルを抽象化するために、ドメイン モデルの小さなサブセットである軽量オブジェクト (DTO) を公開することです。
  • 反対に、ドメイン モデルへの変更は、アプリケーション全体でさまざまな DTO を変更して変更を表示することを意味しますが、ドメイン モデルを公開すると、変更は 1 つの場所で行われます。

これについてのコメントと考えを期待しています。

すべての助けに感謝します!

4

3 に答える 3

2

いいえ、それは MDA の目的ではありません。システムの動作を指定するために高レベルの表記 (UML とそのアクション言語) を使用して、特定のプラットフォームから自分自身を隔離することです。

ドメイン モデルを公開する必要があるかどうかは、アプリケーションによって異なります。アプリケーションを定期的に使用するユーザー (IDE について考えてみてください) の場合、ドメイン モデルは明らかに公開されており、そのドメイン内のオブジェクトを直接操作します。ただし、ときどき使用されるアプリ (チェックイン用の空港のキオスクを考えてみてください) の場合、アプリはワークフローを通じてユーザーをガイドする必要があります。

ドメイン オブジェクトを保護する場合でも、DTO は必ずしも必要ではありません。これは、ドメイン オブジェクトが UI をレンダリングするレイヤーと同じプロセス空間にあるかどうかによって異なります。DTO を必要とするアーキテクチャは、DRY の原則に違反しているため、新しい要件への適応があまり得意ではありません。

実際、直接公開されたドメイン オブジェクトのみからエンタープライズ アプリを構築することは可能です。これが Naked Objects パターンの目的です。オリジナルの Naked Objects Framework (Java 上) など、これを実装するオープン ソース フレームワークがいくつかあります。.NET に相当する商用版もあります。

ドメイン オブジェクトに関する一般的な議論については、Evans の著書 Domain-Driven Design を参照することをお勧めします。yahoo にもアクティブなニュースグループがあります。

ダン

完全な開示: 私は Java の NOF のコミッターであり、.NET バージョンには直接関与していません。

于 2010-05-05T05:44:31.123 に答える
0

私はダンに同意します。これに取り組む1つの方法は、インターフェースを使用することです。パブリックメソッドが、ドメインオブジェクトが最初に実装するインターフェイスを返すようにします。アプリケーションからドメインオブジェクトを返すことが機能しなくなった場合は、DTOを導入し、関連するインターフェイスを実装します。ライブラリの内部が変更されましたが、消費するアプリケーションは影響を受けません。

于 2010-06-28T15:04:07.927 に答える
0

私はこの分野にあまり精通していませんが、最近、Gojko Adzicによるこのブログ投稿を読みました。これは、DTOが必ずしも良いアイデアではないこと、およびドメインモデルを別々の層で繰り返しても問題ないことについて関連していると思います。 DRYに違反しないように。

于 2010-07-02T11:21:04.377 に答える