Уменьшает ли ViewModel производительность веб-приложений?

Насколько я понимаю, использование моделей представления может сделать веб-разработчика. жизнь намного проще, в том смысле, что мы можем использовать этот подход для отображения только необходимых свойств в локализованных строках. Также я использую в mvc3 view модели JQuery проверки и т. Д.

Прямо сейчас я сомневаюсь, так как у меня есть реальное узкое место в моем веб-приложении. с запросом всех объектов (20 из них), как это

 List<Domain.Property> data = session.Query<Domain.Property>().ToList();    
 return PropertyViewModel.FromDomainModel(data);

и этот список объектов Property отправляется моему ViewModel, где FromDomainModel, который ожидает список объектов Property, как это

List<PropertyViewModel> dataVm = new List<PropertyViewModel>();
{
            foreach (Property p in x)
            {
                dataVm.Add(new PropertyViewModel(p));
            }
            return dataVm;
}

сейчас в том же классе я использую

public PropertyViewModel(Property x)
        {
            Id = x.Id;
            Created = x.Created;
            Title = x.Title;
             ....
            Photo = x.Photos.First();
}

но при использовании этого подхода отправка коллекции объектов в viewmodel, откуда возвращается та же самая viewmodel, с несколькими необходимыми мне свойствами, странно (по крайней мере, для меня), у меня значительно увеличилась загрузка нескольких объектов и длительность времени.

Если вам нужно больше информации. Пожалуйста спросите.

Также, если вы знаете для лучшего решения, пожалуйста, поделитесь.

Обновление: при использовании доменной модели у меня загружено 20 объектов, а при использовании описанной выше модели представления загружено 67 объектов, что значительно снижает производительность.

3 ответа

Решение

Действительно, будет дополнительное время, потраченное на отображение между моделями доменов и моделями представления, но это время будет смехотворно бесконечно малым, что не должно быть узким местом. Вызов метода установки свойств в C# является чрезвычайно быстрой операцией и абсолютно незначителен по сравнению, например, с вызовом базы данных.

Поэтому продолжайте использовать модели представления, не беспокоясь о том, что это как-то повлияет на производительность вашего приложения.

Разные виды будут иметь разные модели. Если для представления требуется большой объем данных, его не следует включать в модель представления для этого представления.

Также проверьте наличие проблем с выбором N+1 и рассмотрите возможность установки размера пакета для классов и коллекций, если вы еще не сделали процесс извлечения ссылочных объектов более эффективным.

Вы не должны замечать никаких узких мест из-за ViewModels, вместо этого это звучит как проблема с производительностью вызовов вашей базы данных, проблема n+1 - действительно распространенная проблема производительности с ORM, вы должны проверить количество вызовов вашей базы данных. Entity Framework Profiler - действительно хороший отладчик для EF, он покажет вам количество обращений к вашей базе данных, а если производительность не будет хорошей, он подскажет, как ее улучшить.

Другие вопросы по тегам