据我所知,使用 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/