ViewModel是否会降低Web应用程序的性能

Bob*_*ock 5 c# nhibernate viewmodel asp.net-mvc-3 view-model-pattern

据我所知,使用视图模型可以使web开发.生活更容易,从某种意义上说,我们可以使用这种方法只显示本地化字符串中所需的属性.我也在mvc3视图模型中使用jquery验证等.

现在我有点怀疑,因为我的webapp中存在真正的瓶颈.查询所有对象(其中20个)就像这样

 List<Domain.Property> data = session.Query<Domain.Property>().ToList();    
 return PropertyViewModel.FromDomainModel(data);
Run Code Online (Sandbox Code Playgroud)

并且Property对象列表被发送到我的ViewModel,其中是FromDomainModel,它需要List of Property对象,如下所示

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

现在和我正在使用的同一个班级

public PropertyViewModel(Property x)
        {
            Id = x.Id;
            Created = x.Created;
            Title = x.Title;
             ....
            Photo = x.Photos.First();
}
Run Code Online (Sandbox Code Playgroud)

但是使用这种方法将对象集合发送到viewmodel,其中返回相同的viewmodel,只返回我需要的几个属性,扼杀(至少对我来说)我实现多个实体加载和持续时间大幅度增加.

如果您需要更多信息.请问.

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

更新: 当使用域模型时,我加载了20个实体,当使用上面描述的视图模型时,会加载67个实体,这会大大降低性能.

Dar*_*rov 3

在域模型和视图模型之间的映射上确实会花费额外的时间,但是这个时间将非常小,绝对不应该成为任何瓶颈。在 C# 中调用属性设置器是一个非常快的操作,并且与数据库调用相比绝对可以忽略不计。

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