【发布时间】:2011-01-17 03:41:44
【问题描述】:
我一直在思考我们在 asp.net MVC 中创建的视图模型对象的概念。我们的目的是实例化它并将其从控制器传递给视图,视图读取它并显示数据。
那些视图模型通常通过构造函数实例化。我们不需要初始化成员,我们可能不需要重新定义/覆盖无参数构造函数,也不需要继承特性。
那么,为什么我们不在视图模型中使用结构类型而不是类。它将提高性能。
【问题讨论】:
标签: asp.net-mvc c#-4.0
我一直在思考我们在 asp.net MVC 中创建的视图模型对象的概念。我们的目的是实例化它并将其从控制器传递给视图,视图读取它并显示数据。
那些视图模型通常通过构造函数实例化。我们不需要初始化成员,我们可能不需要重新定义/覆盖无参数构造函数,也不需要继承特性。
那么,为什么我们不在视图模型中使用结构类型而不是类。它将提高性能。
【问题讨论】:
标签: asp.net-mvc c#-4.0
您认为“它会提高性能”是理所当然的,但您真的确定吗?在非常具体的情况下,结构比类表现更好。为简单起见,我进行了概括,但场景主要是:
还有其他的,但这只是我的想法。即便如此,我们谈论的往往是微不足道的性能提升。以 微秒 为单位。
即使您可以保证您的视图模型是不可变的和微小的,其他条件也不成立。假设每个请求一个视图模型,您的 Web 服务器每秒不会处理数百万个请求。此外,MVC 框架不能在紧密循环中使用这些,并且不包含针对此特定结构优化的代码路径。因此,MVC 框架最终将对您的值类型执行大量装箱/拆箱操作。
底线 - 不要微优化或过度设计您的解决方案。上课就好了。在优化方面,始终衡量以确保您将时间投入到有价值的事业中。鱼大了就别管小事了。
【讨论】:
使用一个类。一些视图模型需要构造函数、转换器和更多功能,为什么要限制为结构? (例如,如果您有 EF4 对象并且需要使用它们制作 POCO...)
【讨论】: