Ich entwickle eine WPF 4.0-Anwendung, in der wir die Daten von einem Remote-Webdienst erhalten. Der Webservice stellt seinen Kunden mehr als 120 Methoden zur Verfügung. Wenn ein Web-Service-Aufruf von meiner WPF-Anwendung fehlschlägt, muss ich es n mal wiederholen, was über App.Config konfigurierbar ist. Wie implementiert man das? Gibt es Entwurfsmuster, die dieses Problem angehen?
Ich habe diesen Code vor nicht allzu langer Zeit geschrieben, um etwas Ähnliches zu tun, was Sie wollen. Es kann an Ihre Bedürfnisse angepasst werden. Es ist eine generische Wartemethode. Übergeben Sie eine Funktion und wenn das erwartete Ergebnis nicht zurückgegeben wird, warten Sie, versuchen Sie es erneut und beenden Sie es nach X Versuchen.
%Vor%Sicher nichts Besonderes, aber es wird den Job erledigen. Das Hauptmuster, das bei so ziemlich jeder Implementierung üblich ist, ist ein Schleifenkonstrukt, das einen Try-Catch enthält und etwas davon kontrolliert; Dies kann entweder ein rekursiver Aufruf oder eine iterative Schleife sein, z. B. die obige while-Schleife. Stellen Sie sicher, dass Sie die Schleife nach einem erfolgreichen Versuch ordnungsgemäß beenden, und verfolgen Sie Wiederholungen; Wenn Sie dies nicht tun, wird eine Endlosschleife ausgelöst.
Hier ist ein ähnlicher Code, der IO-Freigaben verletzt. Es ist die gleiche Idee: Wir haben eine Delegate und eine statische Wrapper-Methode:
%Vor%Und dann nennen wir es so (Lambda-Ausdruck passt perfekt hier):
%Vor%Sie können dafür einen funktionalen Ansatz verwenden:
%Vor%Sie können dies verwenden, um bestimmte Ausnahmen abzufangen (fügen Sie bei Bedarf weitere generische TException-Parameter hinzu).