json - JSON 序列化性能问题 Web API
问题描述
我们有一个 asp.net Web API 应用程序,当调用 POST API 时,需要 30 秒才能到达 API 中的第一条语句。我了解主要从请求正文中反序列化对象所花费的时间。我们使用 Newtonsoft json 和默认的合约解析器。
config.Formatters.JsonFormatter.SerializerSettings.ContractResolver = new DefaultContractResolver();
Json 对象有 25 个部门 -> 每个部门有一个 5 年对象的数组 > 每年有一个月份数组(12 个对象) -> 每个月是一个有 15 个属性的对象
有趣的部分是性能延迟仅发生在特定环境中。虽然在我的本地环境中没有问题,但具有相同数据的副本。我可以尝试为 newtonsoft ( https://www.newtonsoft.com/json/help/html/Performance.htm ) 建议的性能改进,但在此之前,我预计同样的问题也会在我的本地发生。
感谢任何帮助!
更新
DefaultContractResolver.DynamicCodeGeneration 在我的本地和其他环境中都设置为 True。
的结果
public class Model { public string Foo { get; set; }
((JsonObjectContract)contractResolver.ResolveContract(typeof(Model))).Properties[0].ValueProvider.GetType()
在我的本地和其他环境中都是 DynamicValueProvider。
解决方案
推荐阅读
- elasticsearch - Elasticseach 多个索引建议
- authentication - 在地址栏中键入时,Vue Router Guards 不会阻止受保护的路由
- qt - Is there a way to simplify the qresource file descriptors?
- excel - [Excel]添加了来自不同工作簿的工作表,仍然出现“更新值”对话框
- python - python:AttributeError: 'GameStats' 对象没有属性 'click_first'
- asp.net-core - .Net Core Web API 项目中的 Hangfire 仪表板
- javascript - Correctly usage of vars in javascript
- javascript - 在 expressJS 中,如何创建一个缓存,使多个请求等待同一个承诺
- java - 多个数据源的多次访问中的DataSource Router问题
- java - 个人描述 (owl-api)