【发布时间】:2016-07-06 00:27:42
【问题描述】:
我有一个分层架构,通常将尝试/捕获、日志记录和现在的异步等内容放在顶级服务层,因此我的域代码和存储库是同步编写的,然后我用等待任务将调用包装在我的服务层中.run 这样我就可以将异步命名和逻辑保留在一层中。这个可以吗?或者是否有理由在所有子方法/较低层中也有异步?它实际上会产生更多线程还是仍然只有 1 个异步线程来发挥作用?
如果这没有问题,我有一个问题,在我的存储库中我需要使用 HttpClient,但它只有异步方法,迫使我在我不想使用的架构中使用 async lower。有没有办法在没有等待/异步的情况下调用这些方法,然后在更高层的方法(在我的服务层中)仍然包装在 task.run 中而不阻塞?基本上我不希望任何方法在我的存储库中是异步的,而是希望它们在我的服务层中,它调用存储库和其他域方法。
【问题讨论】:
-
在方法的实现中不要使用Task.Run;而是使用 Task.Run 调用方法(来自here)。
-
在他的 blog article 中,Stephen Cleary 提出了一些您可能会感兴趣的好观点。
-
你为什么首先使用异步?这是一个 Web 服务器场景,对吧?
-
我的意思是为什么异步而不是同步。这是一个网络服务器场景?
-
你最好在programmers.stackexchange.com问这个问题
标签: c# .net asynchronous async-await