何时使用异步版本的 JsonSerializer(SerializeAsync/DeserializeAsync)?

问题描述 投票:0回答:1

像 JsonSerializer 这样的序列化器具有异步版本的方法。 我想澄清一下在什么情况下使用它们。我通常默认使用简单版本的序列化/反序列化,从不关心异步版本。但在某些情况下可能最好使用异步版本。

c# .net asynchronous serialization json.net
1个回答
1
投票

这里的相关问题是:

  1. 我是否已经有正在处理的数据,或者数据是异步传入的,例如通过套接字传入的?
  2. 我是否关心阻塞IO操作的开销?

如果数据已经在

string
byte[]
MemoryStream
或类似的内容中:那么只需使用同步反序列化(等);它会更快(异步机制本身有开销)。如果数据从外部源流入(或流出):考虑异步。

第二个问题可以大致近似为“我在服务器上运行吗?”;客户端和控制台应用程序:通常不会因空闲线程而遭受巨大损失(如果我们忽略 UI 阻塞,这可以通过其他方式避免),而在服务器应用程序上:空闲线程(在挂起的 IO 上被阻塞)会严重限制吞吐量。服务器本质上以更高的并发性运行,而线程是有限且昂贵的资源。

© www.soinside.com 2019 - 2024. All rights reserved.