1

我在 MVC 中经常看到的模式是从数据库中加载域模型(或存储库),然后将其映射到视图模型中。

我对这种模式有疑问 - 当您遇到视图模型仅包含大型域模型对象中的几个属性的情况时。而且因为它是一个可能会获得高流量的网站,这似乎不是性能方面的最终解决方案,它就像在做SELECT * FROM TABLE,而不是仅仅选择所需的列。

我能想到的另一种选择是 DAL 会返回一个视图模型而不是域模型,但我以前从未见过这样的 pettern,这是一个不好的模式吗?还有其他模式吗?还是应该忽略加载大型域模型的开销,即使我只需要几个属性?

4

1 回答 1

0

这确实是基于意见的问题,但我参加了HighLoad++会议,Marco Cecconi是 Stack Exchange 开发人员之一,他的演示文稿Stack Overflow - 一切都与性能有关!.

如您所知,stackoverflow 是用 ASP.NET MVC 编写的,Marco 说 SO 项目在控制器中有简单的 ADO 请求。他们这样写是因为性能。当您有大量请求并创建许多中间对象(DAL 模型、BL 模型、ViewModel 等)时,C# GC 会出现问题。

那么,如果他们为了表现而这样做,为什么你不能这样做呢?

于 2015-11-18T11:10:03.843 回答