我有几个关于编写异步程序的问题。我正在编写一些昂贵方法的WCF服务,这些方法非常适合进行异步调用。但是我的问题是:
- 如果我在模型中创建异步方法,则需要将服务方法标记为异步才能等待模型方法,并将返回类型更改为
Task<originalType>
。这会破坏服务API约定的一致性。正确的方法是什么?即使某些方法不昂贵并且实际上没有理由使其异步,是否更好地将服务接口设计为返回async Task
的方法? - 据我所了解,只有昂贵的方法应该编写为异步方法,但在这种情况下,程序的一半将是同步的,另一半将是异步的。这是正确的吗?
await Task.Run()
的东西。但是对于WCF服务或类似服务,情况并非如此。 - svickWCF服务
中的async-await
是关于可扩展性的,而在GUI应用程序中则关乎卸载。 - i3arnon