我们有一个 asp.net 应用程序,它不使用异步或并行方法(除了一些 owin 中间件)。
我想开始使用一些使用异步等待语法的方法的异步版本。
我知道混合异步和同步操作存在危险,因为这可能会导致死锁。
一次重写整个应用是不可能的。
我应该从哪里开始?是使 Controller Action 异步并按我的方式工作的安全方法吗?或者反过来?
是否有一些我可以一路观察的明确警告标志,例如:“永远不要让同步方法调用异步方法,但让异步调用同步没问题”
最佳答案
Where should I Start? is the safe way to do it to make the controllers actions async and work my way down? or the other way around?
我建议从“叶子”开始并创建“垂直分区”。也就是说,在服务或数据访问层内,识别 I/O 绑定(bind)操作。然后创建那些使用自然异步 API 的方法的异步副本。一旦你有了这些,然后继续“向上”你的层,创建异步副本,直到你可以使 Controller 操作异步。
您最终会遇到大量代码重复 - 同一方法的同步和异步版本 - 但这只是暂时的。一旦所有其他代码仅使用方法的异步版本,就可以删除同步版本。
关于c# - 一点一点地更改 asp.net 应用程序以使用异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28581566/