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