我正在使用ASP.Net Core 1.x来托管Web API。我的一个API接收JSON数据作为输入。输入采用Newtonsoft JSON的JObject列表的形式。 API必须验证输入的JSON数据。 验证有两种 - 对JSON字段的值等任何约束进行验证的都在给定范围内(对于数字)或匹配正则表达式模式等。 第二种类型的验证检查给定的JSON字段值是否是数据库中退出时的有效值之一。
我当前的实现大致迭代每个JObject,然后是每个JProperty,然后通过优化进行验证,为第二类验证进行批量查询。
我正在寻找有关如何改进此顺序验证的建议。
由于第一种类型的验证完全是CPU限制操作,我期待使用Parallel.ForEach
并行处理每个对象的验证。我将每个对象的验证视为独立操作。
但是我从给定的书Concurrency in C# Cookbook -
中读到了...一般来说,服务器上的并行编程会起作用 内置并行性,不会带来任何实际好处。
这让我感到困惑。我不应该进行并行处理吗?对我有什么其他选择?
更新:(基于以下评论) JSON大小目前设置为2kb - 20Kb。在此API上运行了一组负载测试,其中20个用户同时访问API,从而降低了性能。然后API开始花费超过3秒来完成。截至今天,输入json大小最大为20 kb,但如果我们进一步进行算法改进,我想将最大JSON大小从20Kb增加。 然而,上述更新讨论了加载API的性能要求,与原始问题是分开的 - 数据并行性或任务并行性是否可以与ASP.Net Core Web API一起使用。