まず、長い質問で申し訳ありませんが、基本的な情報を提供する必要があります。
ASP.net MVC、JQuery テンプレート、Entity Framework、WCF を使用するアプリケーションを作成しており、ドメイン層として POCO を使用しました。このアプリケーションには、ASP.net MVC アプリケーションとデータを交換するための WCF サービス レイヤーがあり、WCF から MVC へのデータ転送オブジェクト (DTO) を使用します。
さらに、アプリケーションは、WCF サービス レイヤーで Domain-TO-DTO を変換するときに AutoMapper を使用して、Entity Framework で遅延読み込みを使用します。
バックエンド アーキテクチャは次のとおりです ( WCF Services -> Managers -> Repository -> Entity Framework(POCO) ) 。
私たちのアプリケーションでは、MVC アプリケーションに別のマッピング レイヤーが必要ないため、ビュー モデルを使用しません。また、ビュー モデルとして DTO のみを使用します。
通常、 Customer 、 CustomerLite などのドメインには Normal および Lite DTO があります ( Lite オブジェクトには Normal よりもプロパティがほとんどありません)。
現在、DTO 構造がより複雑になり、保守性 (DTO の一般的な階層構造) を考えるとパフォーマンスが低下するため、DTO でいくつかの問題が発生しています。
例えば、
次のように、カスタマー ビュー ページと DTO 階層があります。
public class CustomerViewDetailsDTO
{
public CustomerLiteDto Customer{get;set;}
public OrderLiteDto Order{get;set;}
public AddressLiteDto Address{get;set;}
}
この場合、このビューには OrderLiteDto の一部のフィールドは必要ありません。しかし、他のいくつかのビューはそのフィールドを必要とするため、それを容易にするためにその構造を使用します。
自動マッピングに関しては、CustomerViewDetailsDTO をマップし、遅延読み込み (Entity Framework) から追加データ (特定のビューには必要ありません) を取得します。
私の質問:
保守性を考慮しながらパフォーマンスを向上させるために使用できるメカニズムはありますか?
同じ DTO に対して、より多くのマップ ビュー ベースのマッピング関数で Automapper を使用することは可能ですか?