当我将数据发回给我们的服务器时,我目前正在处理ASP.Net项目中的性能问题。数据集相当大,包含1000多个项目,每个项目都是同一视图模型的实例。
视图模型由30多个属性组成(字符串,guids,小数,日期时间,枚举等)。我们遇到的问题是模型绑定花费了大量的时间,这将极大地影响用户体验。我们正在谈论一个帖子8-10分钟。
我正在Fiddler观看请求并且生成的JSON很好,请求很快就开始了。在调用控制器方法中设置断点时,它不会被击中8-10分钟。
作为调查的一部分,我删除了视图模型,将日期时间更改为双精度,将Guid更改为字符串,枚举整数和小数变为双精度。这将数据缩短到大约30秒,以使数据达到控制器方法。我猜这是与框架有关,必须将数千个属性装入他们的.Net类型。
还有其他方法可以解决这个问题吗?更改视图模型中的数据类型可能会给我们带来很多问题,也会产生很多额外的工作。
答案 0 :(得分:2)
MVC中的默认模型绑定器可能非常慢,因为它必须处理每个通用模型绑定情况。它必须与反射和其他东西混淆。也就是说,在处理相同模型的列表时,你会希望它更聪明一些。
我怀疑你可能不得不考虑为这种情况创建一个自定义模型绑定器,而不是依赖默认值。
这将意味着实现IModelBinder接口并将其指定为模型的模型绑定器。至少要研究的东西