我在MVC中总是看到的模式是从数据库加载域模型(或存储库),然后将其映射到视图模型中。
我对此模式有疑问 - 当您遇到视图模型仅包含大型域模型对象中的一些属性的情况时。而且因为它是一个可能获得高流量的网站,这似乎不是性能方面的最终解决方案,就像做SELECT * FROM TABLE
,而不是只选择所需的列。
我能想到的另一种选择是DAL会返回一个视图模型而不是一个域模型,但我以前从未见过如此使用过这种模式,这是一个不好的模式吗?还有其他模式吗?或者我应该忽略加载大型域模型的开销,即使我只需要几个属性呢?
答案 0 :(得分:0)
这是真正基于意见的问题,但我在HighLoad++会议上 Marco Cecconi Stack Exchange开发人员之一,他的演示文稿Stack Overflow - It's all about performance!。
如你所知,stackoverflow是用ASP.NET MVC编写的,Marco说SO项目在控制器中有简单的ADO请求。他们这样写是因为性能。当您有大量请求并创建许多中间对象(DAL模型,BL模型,ViewModel等)时,C#GC会出现问题。
所以,如果他们这样做是为了表现为什么你不能这样做呢?