Во-первых, Извините за длинный вопрос, но я должен дать некоторую базовую информацию.
Мы создаем приложение, которое использует ASP.net MVC, JQuery Templates, Entity Framework, WCF, и мы использовали POCO в качестве нашего домена. В нашем приложении есть слой служб WCF для обмена данными с приложением ASP.net MVC, и он использует объекты передачи данных (DTO) из WCF в MVC.
Кроме того, приложение использует Lazy Загрузка в Entity Framework с помощью AutoMapper при преобразовании доменов-TO-DTO на нашем уровне обслуживания WCF.
Наша архитектура Backend следующим образом (Службы WCF → Менеджеры → Репозиторий → Структура сущностей (POCO))
В нашем приложении мы не используем View Models, так как нам не нужен другой слой отображения для приложения MVC, и мы используем только DTO как View Model.
Как правило, у нас есть нормальные и Lite DTO для домена, такие как Customer, CustomerLite и т.д. (Объект 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 для этого представления. Но некоторым другим представлениям нужны эти поля, поэтому, чтобы облегчить это, мы используем эту структуру.
Когда дело доходит до Auto Mapping, мы сопоставляем CustomerViewDetailsDTO, и мы получим дополнительные данные (которые не нужны для определенного вида) из Lazy Loading (Entity Framework).
Мои вопросы:
-
Есть ли какой-либо механизм, который мы можем использовать для повышения производительности при рассмотрении ремонтопригодности?
-
Можно ли использовать Automapper с другими функциями отображения на основе карты для того же DTO?