Ich habe die Anfänge meiner ersten Silverlight MVVM-App und muss wissen, wo ich Geschäftslogik einschließlich async Serviceaufrufe setzen sollte. Geht es auf der Seite, auf der die Ansicht gehostet wird? Setzen Sie einfach eine Eigenschaft des ViewModel, die die Ansicht aktualisiert?MVVM in Silverlight - Wohin geht die asynchrone Servicelogik?
Antwort
MVVM in Silverlight ist schwieriger als in WPF, aber wir haben es geschafft. Ja, wir stellen den Async-Serviceaufruf in das ViewModel. Das "Modell" in unserem Fall sind die Proxy-Objekte, die über den Web-Service-Aufruf hin- und hergeschickt werden. Leider bedeutet dies, dass einige Ihrer Funktionen in Ihrem Client ViewModel und einige auf der Serverseite sind. Es gibt wirklich keine Möglichkeit, dies zu umgehen.
... und ja, lassen Sie den Ereignishandler Async Complete in eine Eigenschaft im ViewModel schreiben und stellen Sie sicher, dass die Eigenschaft (oder Sammlung) INotifyPropertyChanged (oder INotifyCollectionChanged) implementiert. Wenn Sie "Modell" -Objekte vom Webdienst zurückholen und diese Objekte INotifyPropertyChanged nicht selbst implementieren, sollten Sie ein Wrapper-ViewModel-Objekt auch um diese Objekte herum betrachten. Wenn Sie eine Ansicht für jedes dieser Objekte haben, können Sie auf diese Weise eine bidirektionale Bindung durchführen.
Ich würde eher zustimmen, dass ein Serviceaufruf, der zu einer Datenänderung führen würde, vom Viewmodel behandelt werden sollte.
Ich habe meine Aufrufe an asynchrone Dienste im Modell und hakte mich in Ereignisse aus meinem Ansichtsmodell ein, die ausgelöst werden, wenn die Daten an das Modell zurückgegeben werden.
Sie haben ein gutes Beispiel von Microsoft here. Dies hat mir geholfen, MVVM- und ASYNC-Anrufe zu verstehen.
- 1. Docker, wohin geht die Firewall?
- 2. Wohin geht java stderr?
- 3. Wohin geht diese Funktionalität?
- 4. Wohin geht Geschäftslogik in Schienen?
- 5. Wohin geht GOTO: EOF?
- 6. Autoconf - Wohin geht config.h?
- 7. Asynchrone MVVM Befehle
- 8. MVVM (ICommand) in Silverlight
- 9. ASP.NET MVC - Wohin geht die Authentifizierungsschicht?
- 10. Wohin geht die Start-Job-Ausgabe?
- 11. NSString Wohin geht der Zeilenumbruch
- 12. Ausnahmebehandlung in PHP: Wohin geht $ e?
- 13. Silverlight MVVM Isolated Storage
- 14. Silverlight MVVM ListBoxItem IsSelected
- 15. Silverlight MVVM Header-Detail
- 16. Wohin geht CELERYBEAT_SCHEDULE in Ihrem Projekt?
- 17. Wohin geht die Ausgabe von console.writeline in einem Webservice?
- 18. WPF Image Control, Quelleigenschaft, Wohin geht die Browserschaltfläche in VS2013?
- 19. Wer Datacontext in Silverlight MVVM setzt
- 20. Wohin geht der Initialisierungscode für große Kolbenanwendungen?
- 21. Beim Debuggen unter Windows wohin geht stderr?
- 22. Wohin geht Console.Out.Write() für einen Windows-Dienst?
- 23. Wohin geht mein eingebetteter Python-Standard?
- 24. Wohin geht local.properties für Android-Projekt?
- 25. Wohin geht eine Java Web Start-Anwendung?
- 26. ProtectSection mit RsaProtectedConfigurationProvider Wohin geht der Schlüssel?
- 27. Wohin geht ein OpenSearch OSDD-Dokument?
- 28. Wohin geht VISA auf dem OSI-Stack?
- 29. Silverlight 4 + MVVM + KeyDown-Ereignis
- 30. Wohin geht die Echoausgabe, wenn ein Bash-Skript ausgeführt wird?