Return 直接从 DAL 查看模型以提高 MVC 中的性能?
Return view model directly from DAL to improve performance in MVC?
我在 MVC 中经常看到的模式是从数据库加载域模型(或存储库),然后将其映射到视图模型。
我有一个关于此模式的问题 - 当您遇到视图模型仅包含大型域模型对象中的几个属性的情况时。因为它是一个可能获得高流量的网站,所以这似乎不是性能方面的最终解决方案,这就像做 SELECT * FROM TABLE
,而不是仅仅选择所需的列。
我能想到的替代方案是 DAL return 视图模型而不是域模型,但我以前从未见过使用过这样的模式,这是一个不好的模式吗?还有其他模式吗?还是我应该忽略加载大型域模型的开销,即使我只需要其中的几个属性?
这确实是基于意见的问题,但我在 HighLoad++ conference where was Marco Cecconi one of Stack Exchange developers with his presentation Stack Overflow - It's all about performance!。
如您所知,Whosebug 是用 ASP.NET MVC 编写的,Marco 说 SO 项目在控制器中有简单的 ADO 请求。他们这样写是因为性能。当您有很多请求并创建许多中间对象(DAL 模型、BL 模型、ViewModel 等)时,C# GC 会出现问题。
如果他们为了性能而这样做,为什么你不能这样做?
我在 MVC 中经常看到的模式是从数据库加载域模型(或存储库),然后将其映射到视图模型。
我有一个关于此模式的问题 - 当您遇到视图模型仅包含大型域模型对象中的几个属性的情况时。因为它是一个可能获得高流量的网站,所以这似乎不是性能方面的最终解决方案,这就像做 SELECT * FROM TABLE
,而不是仅仅选择所需的列。
我能想到的替代方案是 DAL return 视图模型而不是域模型,但我以前从未见过使用过这样的模式,这是一个不好的模式吗?还有其他模式吗?还是我应该忽略加载大型域模型的开销,即使我只需要其中的几个属性?
这确实是基于意见的问题,但我在 HighLoad++ conference where was Marco Cecconi one of Stack Exchange developers with his presentation Stack Overflow - It's all about performance!。
如您所知,Whosebug 是用 ASP.NET MVC 编写的,Marco 说 SO 项目在控制器中有简单的 ADO 请求。他们这样写是因为性能。当您有很多请求并创建许多中间对象(DAL 模型、BL 模型、ViewModel 等)时,C# GC 会出现问题。
如果他们为了性能而这样做,为什么你不能这样做?