我目前正在处理一个ASP.Net项目中的性能问题,当将数据发送回我们的服务器时。数据集相当大,包含1000多个项目,每个项目都是同一视图模型的一个实例。
视图模型由30多个属性组成(字符串、guids、小数、日期时间、枚举等)。我们的问题是,模型绑定花费了大量愚蠢的时间,这将极大地影响用户体验。我们说的是一个帖子8-10分钟。
我正在查看Fiddler中的请求,生成的JSON没有问题,请求很快就被触发了。当在被调用的控制器方法中放置一个断点时,它在8-10分钟内不会被击中。
作为我研究的一部分,我剥离了视图模型,将日期时间改为双精度,将Guid改为字符串,将枚举改为整数,将小数改为双精度。这将数据命中控制器方法的时间缩短到30秒左右。我猜这与框架必须将数千个属性打包到其.Net类型中有关。
有没有其他方法来解决这个问题?更改视图模型中的数据类型可能会给我们带来很多问题,也会带来很多额外的工作。
发布于 2016-02-03 00:45:59
MVC中的默认模型绑定器可能非常慢,因为它必须处理所有通用的模型绑定情况。它必须与反射和其他一些东西混在一起。也就是说,在处理相同模型的列表时,您会希望它更聪明一些。
我怀疑您可能不得不考虑为这种情况创建一个自定义模型绑定器,而不是依赖于缺省的。
这将意味着实现IModelBinder接口,并将其指定为模型的模型绑定器。至少要调查的东西
https://stackoverflow.com/questions/35134856
复制相似问题