我目前正在开始使用 .NET Prism 框架来开发 WPF 应用程序。我无法确定的一件事是实现对 WCF 服务或数据库的异步调用的最佳方式?原因是,我不希望 WCF/DB 调用阻塞 UI 线程,这会导致 UI 冻结,直到操作完成。
据我了解,我应该遵循架构:
View (WPF) <=> View Model <=> Application Services <=> DB/WCF
我是否使用AsyncDelegateCommand之类的东西在视图模型中实现异步行为?如果我这样做,那么我将无法在应用程序服务中维护任何状态,因为设置任何状态都需要在 UI 线程中完成(除非有解决方法)。
因此,另一种选择是在应用程序服务中提供带有回调的异步方法,并让应用程序服务为异步操作生成线程/任务。
我简要研究了 Prism StockTrader 参考实现,它们似乎没有异步执行任何操作。我觉得这应该是一个非常普遍的问题,并且必须有一些最佳实践来解决这个问题。