我有一个ASP.NET MVC网站,我正在尝试找出控制器和模型(存储库)以及HTML帮助程序功能的分离。
目标是查询相册信息的数据库表,并按年分组显示。
步骤如下:
根据这个要求,我可以看到: 1,2,3全部在模型中,控制器只是将View绑定到AlbumDictionary模型 要么 模型中的1,2并绑定到AlbumCollection和HTML ViewHelper中的3 要么 1,2在控制器的模型3中并绑定到Albumdictionary
思想?
在第一个循环中进行每次转换都会获得最佳性能,但我不确定它是最佳关注点。
特别是对于上述问题,通用反馈会很有趣:关注点分离何时会超出性能或反之亦然?
答案 0 :(得分:2)
作为一个真正可怕的软件的用户,我确信从面向对象的角度来看对设计师来说很好看,甚至可能很容易维护,我想指出用户会站在一边几乎每次都有表现。
如果性能差异可以忽略不计,请遵循关注点分离,如果不是,请尽一切努力获得最佳性能。我们需要不再担心可能维持的额外几分钟(可能每年一次触摸该代码)以及更多关于每天所有用户的缓慢问题。我们喜欢说开发时间非常昂贵,我们需要将其最小化,但事实是开发时间通常比我们要求用户每天浪费的时间要便宜得多。
答案 1 :(得分:1)
我会尽量避免模型与渲染有关。
我看到按年分组非常接近渲染。这就是为什么我不把它放入模型而不是控制器。一个常见的方法是使用一个Poco和DAL / BLL模型以及一个名为ViewModel的模型(强类型视图使用的模型)。这是准备渲染对象的好地方。
在ViewModel中,我会使用Linq按年份对相册进行分组。希望这足够快。
答案 2 :(得分:0)
只有在以下情况下我才会在控制器中进行分组:
分段只发生一次,我可以使用一个或两个简单语句来实现;
它不止一次发生,但我只用AlbumDictionary.BucketByYear()
声明即可。
否则我会使用模型来做到这一点。