c# - ViewModel 会降低 Web 应用程序性能吗

标签 c# asp.net-mvc-3 nhibernate viewmodel view-model-pattern

据我所知,使用 View 模型可以进行 Web 开发。从某种意义上说,我们可以使用这种方法只显示本地化字符串中需要的属性,这样生活就容易多了。我还在 mvc3 View 模型中使用 jquery 验证等。

现在我很怀疑,因为我的 webapp 遇到了真正的瓶颈。像这样查询所有对象(其中 20 个)

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

并且属性对象列表被发送到我的 ViewModel,其中 FromDomainModel 期望像这样的属性对象列表

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

现在我正在使用同一个类(class)

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

但是使用这种方法将对象集合发送到 View 模型,从那里返回相同的 View 模型,只有我需要的几个属性,strangly(至少对我来说)我经历了多个实体负载和持续时间急剧增加。

如果您需要更多信息。请问一下。

此外,如果您知道更好的解决方案,请分享。

更新: 使用域模型时,我加载了 20 个实体,而使用上述 View 模型时,加载了 67 个实体,这会显着降低性能。

最佳答案

域模型和 View 模型之间的映射确实会花费额外的时间,但这次时间会小得离谱,无限小,绝对不应该成为任何瓶颈。在 C# 中调用属性 setter 是一种非常快速的操作,与数据库调用相比完全可以忽略不计。

因此,请继续使用 View 模型,而不必担心这会以某种方式影响应用程序的性能。

关于c# - ViewModel 会降低 Web 应用程序性能吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10790845/

相关文章:

javascript - 尝试使用 ajax 将 100mb 字节数组从 js 发送到 c# 时出错

c# - 当 DataSource 未返回完整结果集时手动设置 GridView 的 PageCount?

asp.net-mvc - Ninject.MVC3、Nuget、WebActivator 天哪

nhibernate - 如何更改 Linq-to-Nhibernate 为特定列生成的 SQL?

c# - 在属性网格中编辑集合的正确方法是什么

c# - 如何获取 Skype 通话状态

asp.net - C# 可选对象操作 MVC 参数

c# - Asp.NET MVC REST API : How to get Client Host Name

c# - 如何在多线程控制台应用程序中使用 Sharp Architecture 设置 NHibernate?

c# - 使用 AutoMapper 将 IList<TSource> 映射到 (Iesi.Collections.Generic) ISet<TDestination>