我想知道是否有人可以指导我在正确的方向上为需要这种模式的服务器创建一个同步请求队列。
我想在我的代码中继续使用已经实现的 async/await 模式,并且能够将上传参数和下载结果(将使用 JSON 序列化)中通用的 GET 和 POST 请求排入队列。
有什么建议么?
我想知道是否有人可以指导我在正确的方向上为需要这种模式的服务器创建一个同步请求队列。
我想在我的代码中继续使用已经实现的 async/await 模式,并且能够将上传参数和下载结果(将使用 JSON 序列化)中通用的 GET 和 POST 请求排入队列。
有什么建议么?
我建议ActionBlock<T>
从TPL Dataflow library使用。
或者,您可以AsyncProducerConsumerQueue
从我的AsyncEx 库中使用。
如果您需要单线程访问,只需使用锁。这有一个异步等效项:(AsyncLock
或AsyncSemaphore
)。
不需要像队列或数据流这样的复杂结构。(AsyncSemaphore
引擎盖下有一个这样的队列,但这对你来说并不重要)。
您的客户端代码可能是异步的,而您的服务是纯同步的。您可以设置 ServiceBehaviorAttribute 以便您的服务一个接一个地执行请求。它甚至可以在您用来打开服务主机的同一线程上运行。如果您的服务从不执行“等待”,它会同步运行。使用这种设计,您可以在需要时增强您的服务,而不会破坏客户端。请参阅我的帖子以获取一些提示。