次のレイヤーを使用してアプリケーションを開発しました。
- 流れるような nHibernate に基づくデータ アクセス レイヤー
- ビジネスルール
- アクティビティ層 (ビジネス ルールよりも抽象的で、いくつかのビジネス ルールを使用)
- 一部の DTO を外部に送信し、DTO を受信する WCF に基づくサービス レイヤー。
そのため、DTO が戻ってきたときに、DTO をサービス層のビジネス オブジェクトにマップし、アプリケーションをビジネス オブジェクトで動作させることができます。その場合、下位層の一部の関数が実行されると、古いオブジェクトについて何も知らないため、状態の変化の処理と検証が難しくなり、DTO アダプターのクラス爆発も発生します。一方、dto が上位層のビジネス オブジェクトにマップされている場合、下位層は呼び出されたサービスについて何も認識していないため、この dto がビジネス オブジェクトをどのように変更する必要があるかを理解できません (1 DTO はさまざまなサービスでさまざまな方法で使用される可能性があります)
問題は、本当の解決策は何ですか??