В настоящее время я начинаю работу с платформой .NET Prism для разработки приложения WPF. Одна вещь, которую я не могу определить, - это лучший способ выполнения асинхронных вызовов службы WCF или базы данных? Причина в том, что я не хочу, чтобы вызов WCF / DB блокировал поток пользовательского интерфейса, из-за чего пользовательский интерфейс просто зависал до завершения операции.
Насколько я понимаю, я должен следовать архитектуре:
View (WPF) <=> View Model <=> Application Services <=> DB/WCF
Реализовать ли я асинхронное поведение в модели представления, используя что-то вроде AsyncDelegateCommand ? Если я это сделаю, то я не смогу поддерживать какое-либо состояние в службах приложений, поскольку установка любого состояния должна выполняться в потоке пользовательского интерфейса (если только нет способа обойти это).
Таким образом, другой вариант заключается в предоставлении асинхронных методов с обратными вызовами в службах приложений и предоставлении службам потоков потоков / задач для асинхронных операций.
Я кратко рассмотрел эталонную реализацию Prism StockTrader, и они, похоже, ничего не делают асинхронно. Я чувствую, что это должно быть очень распространенной проблемой, и должны быть некоторые лучшие методы, чтобы справиться с этим.