DTO Pattern + Lazy Loading + Entity Framework + ASP.Net MVC + Auto Mapper
Po pierwsze, przepraszam za długie pytanie, ale muszę podać pewne podstawowe informacje.
Tworzymy aplikację korzystającą z ASP.net MVC, JQuery Templates, Entity Framework, WCF i użyliśmy POCO jako naszej warstwy domeny. W naszej aplikacji istnieje warstwa usług WCF do wymiany danych z aplikacją ASP.net MVC i wykorzystuje obiekty transferu danych (DTO) z WCF do MVC.
Ponadto aplikacja używa Lazy Loading w Entity Framework przy użyciu AutoMappera podczas konwersji Domain-TO-DTO w naszej warstwie usług WCF.
Nasza architektura Backend w następujący sposób (Usługi WCF -> Managers -> Repository -> Entity Framework (POCO))
W naszej aplikacji nie używamy View Models, ponieważ nie chcemy innej warstwy mapowania dla aplikacji MVC i używamy tylko DTO jako View Models.
Ogólnie rzecz biorąc, mamy normalne i Lite DTO dla domen takich jak Klient, KlientLite, itp. (Obiekt Lite ma niewiele właściwości niż Normalny).
Teraz mamy pewne trudności z DTO, ponieważ nasza struktura DTO staje się coraz bardziej złożona, a kiedy myślimy o możliwości utrzymania (z ogólną hierarchiczną strukturą DTO), tracimy wydajność.
Na przykład,
Mamy stronę Customer View i naszą hierarchię DTO w następujący sposób
public class CustomerViewDetailsDTO
{
public CustomerLiteDto Customer{get;set;}
public OrderLiteDto Order{get;set;}
public AddressLiteDto Address{get;set;}
}
W tym przypadku nie chcemy, aby niektóre pola OrderLiteDto dla tego widoku. Ale inny widok potrzebuje tych pól, więc aby ułatwić to, używamy tej struktury.
Jeśli chodzi o automatyczne mapowanie, mapujemy CustomerViewDetailsDTO i otrzymamy dodatkowe dane (które nie są wymagane dla konkretnego widoku) z Lazy Loading (Entity Framework).
Moje pytania:
Czy jest jakiś mechanizm, który możemy wykorzystać do poprawy wydajności przy rozważaniu możliwości konserwacji?
Czy możliwe jest użycie Automappera z większą liczbą funkcji mapowania opartych na widoku mapy dla tego samego DTO?