将大于 2MiB 的对象序列化为 Asp.net 中的 Json
Serializing objects bigger than 2MiB to Json in Asp.net
我们目前正在进行性能测试以确定 Kendo UI 是否足够快以满足我们的需求。为此,我们需要使用大型数据库(约 150 列和约 100,000 行)执行测试。
Table 行应由 Kendo UI 网格使用 ajax 调用读取,其中 return 数据作为 json细绳。使用我们的测试数据(3-10 个字符的随机字符串),这适用于每个请求最多 ~700 个结果行。更多,我们点击 maxJsonLength,它已经设置为 Int32.Max-3
.
我们不计划每页显示那么多行,但这些行可能附加了二进制数据。即使有 20 行,该数据也可以轻松超过必须使用 Int32
设置最大大小所隐含的 2 MiB 限制。
那么有没有办法序列化长度大于2M的对象呢?
JSON 并不是真正为传输大型二进制数据而设计的。如果您希望您的 UI 快速而活泼,您应该尝试将较大的对象拆分为较小的对象,并从 json.
中删除二进制内容
比如可以重构json的内容,只携带一个link到二进制资源。如果屏幕上 实际上 需要该二进制资源,您可以执行单独的请求。事实上,您可以并行执行请求:例如加载 json 并显示内容。用二进制数据加载第 N 个条目并显示它。不要加载其余部分,因为它会减慢您的页面呈现时间。
我们现在使用 http://www.newtonsoft.com 中的 Json 库来序列化对象。它不受 web.config
设置的约束,可以处理 Json 无限长度的 afaik 请求。
我们目前正在进行性能测试以确定 Kendo UI 是否足够快以满足我们的需求。为此,我们需要使用大型数据库(约 150 列和约 100,000 行)执行测试。
Table 行应由 Kendo UI 网格使用 ajax 调用读取,其中 return 数据作为 json细绳。使用我们的测试数据(3-10 个字符的随机字符串),这适用于每个请求最多 ~700 个结果行。更多,我们点击 maxJsonLength,它已经设置为 Int32.Max-3
.
我们不计划每页显示那么多行,但这些行可能附加了二进制数据。即使有 20 行,该数据也可以轻松超过必须使用 Int32
设置最大大小所隐含的 2 MiB 限制。
那么有没有办法序列化长度大于2M的对象呢?
JSON 并不是真正为传输大型二进制数据而设计的。如果您希望您的 UI 快速而活泼,您应该尝试将较大的对象拆分为较小的对象,并从 json.
中删除二进制内容比如可以重构json的内容,只携带一个link到二进制资源。如果屏幕上 实际上 需要该二进制资源,您可以执行单独的请求。事实上,您可以并行执行请求:例如加载 json 并显示内容。用二进制数据加载第 N 个条目并显示它。不要加载其余部分,因为它会减慢您的页面呈现时间。
我们现在使用 http://www.newtonsoft.com 中的 Json 库来序列化对象。它不受 web.config
设置的约束,可以处理 Json 无限长度的 afaik 请求。