Ich habe eine WCF-Dienstoperation, und ich möchte einen Aufruf an die Operation, um eine lang laufende Methode zu starten, jedoch möchte ich, dass die Operation ihr Ergebnis zurückgibt, BEVOR die langwierige Methode beendet wird.
Ich habe versucht, eine IParameterInspector-Implementierung zu verwenden, aber das Ergebnis der Operation wird erst wieder an den Client zurückgegeben, wenn die lang andauernde Methode abgeschlossen ist.
Wie soll ich das erreichen, da alles, was ich von der Operation starte, zu Ende sein muss, bevor das Ergebnis an den Client zurückgegeben wird?
Danke.
Wenn Sie dies auf dem Server tun möchten, sehen Sie sich Ссылка , es zeigt, wie man die Operation umgehen kann (es ist ein Caching-Szenario, aber es kann an Ihr Problem angepasst werden).
Wenn Sie es auf dem Client tun möchten, können Sie die Operation einfach asynchron aufrufen, sie wird sofort zurückgehen. Und wenn der langwierige Vorgang abgeschlossen ist, erhalten Sie eine Benachrichtigung (Rückruf oder Ereignis), dass die Ergebnisse bereit sind.
Sie können dies nicht mit einer standardmäßigen Anforderungs- / Antworttyp-Bindung in WCF tun, da Sie, wie Sie herausgefunden haben, erst dann eine Antwort erhalten, wenn der Dienst die Verarbeitung abgeschlossen hat (oder abläuft). Um zu tun, was Sie wollen, benötigen Sie einen Dienst, bei dem Sie den lang andauernden Vorgang auslösen und dann nach Abschlussstatus & amp; Antwort Ergebnisse.
Das netMsmqBinding unterstützt dieses Szenario in WCF. Alle Vorgänge für diese Bindung müssen eine unidirektionale Verbindung sein, da Sie eine Nachricht nur zur Verarbeitung in eine Warteschlange stellen. Sie müssen einen anderen Endpunkt oder Dienst mit einer Anfrage / Antwort-Bindung für die Abrufmethode konfigurieren. Eine gute Übersicht über die netMsmqBinding ist hier.
Tags und Links wcf