Wie strukturieren Sie bei der Codierung von Web-Services Ihre Rückgabewerte? Wie gehen Sie mit Fehlerbedingungen um (erwartete und unerwartete)? Wenn Sie etwas Einfaches wie ein Int zurückgeben, geben Sie es einfach zurück oder betten Sie es in ein komplexeres Objekt ein? Enthalten alle Webmethoden innerhalb eines Service eine Instanz einer einzelnen Klasse oder erstellen Sie eine benutzerdefinierte Rückgabewertklasse für jede Methode?Was ist ein gutes Entwurfsmuster für die Rückgabewerte von Webmethoden?
Antwort
Ich mag das Request/Response-Objektmuster, in dem Sie Ihre Argumente in eine einzelne [Operation] Request-Klasse kapseln, die einfache öffentliche Eigenschaften enthält.
Etwas wie AddCustomerRequest, die AddCustomerResponse zurückgeben würde.
Die Antwort kann Informationen über den Erfolg/Fehlschlag der Operation enthalten, alle Nachrichten, die möglicherweise von der Benutzeroberfläche verwendet werden, z. B. die ID des hinzugefügten Kunden.
Ein anderes gutes Muster besteht darin, diese alle von einer einfachen IMessage-Schnittstelle abzuleiten, wo Ihr allgemeiner Endpunkt etwas wie Process (params IMessage [] - Nachrichten) ist ... auf diese Weise können Sie mehrere Operationen in derselben übergeben Webanfrage.
+1 für Bens Antwort.
Darüber hinaus schlage ich vor zu berücksichtigen, dass die generische Antwort mehrere Fehler/Warnung Elemente erlauben, um die Antwort so umfassend und umsetzbar wie möglich zu ermöglichen. (Möchten Sie einen Compiler verwenden, der nach der ersten Fehlermeldung gestoppt wurde oder der Ihnen so viel wie möglich angezeigt hat?)
Wenn Sie SOAP-Webdienste verwenden, sind SOAP faults die Standardmethode zum Zurückgeben von Fehlerdetails. wo die Fehlermeldungen jedes Detail zurückgeben können, das Sie mögen.
Soap-Fehler sind eine Standardmethode, bei der die aufrufende Anwendung ein Soap-Client ist. Es gibt Fälle, wie ein COM-Client, der XMLHTTP verwendet, bei dem die Soap als XML analysiert wird und Soap-Fehler nicht einfach behandelt werden können. Kann noch nicht abstimmen aber noch +1 für @Ben Scheirman.
- 1. Was ist ein gutes Datenmodell für die Kreuztabellierung?
- 2. Was ist ein gutes Einstiegsbuch/Ressource für die Komprimierung?
- 3. Was ist das Entwurfsmuster für die Verarbeitung von Befehlszeilenargumenten?
- 4. Was ist ein gutes Design für ein mittleres Dreifachrelationsmodell?
- 5. Benötigen gutes Entwurfsmuster für das Zwischenspeichern von Datenbankabfrageergebnissätzen
- 6. Ist eine Warteschlange von Lambda ein gutes Entwurfsmuster für eine Arbeitswarteschlange in C++ 11?
- 7. Was ist ein gutes Web-Crawler-Tool?
- 8. Was ist ein gutes Entwurfsmuster in C#, um referenzierte Objekte verschiedener Unterklassen zu instanziieren?
- 9. Was ist ein gutes Berechtigungssystem zu verwenden?
- 10. Was ist ein gutes Bereitstellungstool für Websites unter Windows?
- 11. Was ist ein gutes Dateisystem für eingebettete NAND-Laufwerke?
- 12. Was ist ein gutes Datenbankdesign (Schema) für eine Anwesenheitsdatenbank?
- 13. Was ist ein gutes Beispiel solrconfig.xml für Django-Heuhaufen?
- 14. Was ist ein gutes CSS-Bereinigungstool?
- 15. Was ist ein gutes SVN-Plugin für Eclipse?
- 16. Was ist ein gutes 2D-Grafikframework für eine Zeichenanwendung?
- 17. Was ist ein gutes Reverse-Db-Engineer-Tool für NHibernate?
- 18. Was ist ein gutes Templating-System für PHP?
- 19. Was ist ein gutes Lernprogramm für C++ - Richtlinien-basierten Klassenentwurf?
- 20. Was ist ein gutes phonetisches Alphabet für eine Passwortanwendung?
- 21. Was ist ein gutes unsichtbares Captcha?
- 22. Was ist ein gutes Layout für eine Standardfehlerprotokolldatei?
- 23. Was ist ein gutes Mercurial-Nutzungsmuster für dieses Setup?
- 24. Was ist ein gutes Beispiel für eine Java Swing-Anwendung?
- 25. Was ist ein gutes MV * -Muster für Qt-Anwendung?
- 26. Was ist ein gutes Multithreading-Buch für Delphi?
- 27. Was ist ein gutes CSS Button Framework für Compass?
- 28. Was ist ein gutes Verhältnis von Entwicklern zu Testern?
- 29. Was ist ein gutes Tool zum Kommentieren von Code?
- 30. Was ist das Entwurfsmuster "Dispatcher"?