是否可以反序列化Web响应,因为它与Jil一起出现没有线程阻塞的块?

时间:2015-11-06 12:09:47

标签: c# asynchronous jil

就挂钟时间而言,反序列化Web响应块是免费的,因为等待块通常比反序列化时间长得多。但是,现有的解决方案:

var streamReader = new System.IO.StreamReader(responseStream);
var deserialized = Jil.JSON.Deserialize<Result>(streamReader);

阻塞线程直到响应完成,这会在高并发场景中使系统陷入停顿状态。要将Jil与异步响应读取一起使用,我们需要类似

的内容
var chunkDeserializer = new JilChunkDeserializer<Response>();    
chunkDeserializer.Consume(buffer, offset, length); //with baked-in string encoding
//chunkDeserializer.Consume(stringChunk); alternative with one extra allocation per chunk
在写完所有数据时调用var deserialised = chunkDeserializer.Finalize()。吉尔有类似的东西吗?如果没有,是否可以实施它?由于它被块等待时间吸收,因此适度的性能损失将毫无意义。

1 个答案:

答案 0 :(得分:1)

目前Jil无法实现,它只能反序列化完整的JSON文档。

假设说:我不确定这实际上会更快,因为Jil必须能够在输入用完时隐藏其状态(随后恢复)。现在大部分状态都在堆栈中,将其移到堆中可能比运行时节省更多成本。