Frage

Ich bin verwirrt darüber, wie ich Fehler mit Seife an einen Client zurückgeben soll.

Ich habe einen WCF -Dienst, aber ich bin mir nicht sicher, welche Technologie der Kunde verwendet, also möchte ich mich an die SOAP -Spezifikation halten.

Soweit ich gelesen habe, scheinen Fehlermeldungen der beste Weg zu sein, um damit umzugehen.

Ich kann sehen, dass mein Service viele verschiedene mögliche Fehler hat:

  • Null erwartete Datenfehler
  • Datenformatfehler (dh: DB erlaubt nur 3 Zeichen)
  • Datenbereiche Fehler "Kunde bereits existiert", "Ihre Anforderung können nicht verarbeitet werden" -Typfehler

Wäre es richtig, für jeden dieser Fehler ein neues Objekt zu erstellen und als solches zu werfen:

FaultException<NullFault>(nf);  
FaultException<InvalidDataFault>(idf);  
FaultException<ArguementFault>(af);  
FaultException<RangeFault>(rf);  

Der Kunde gibt große Objekte mit vielen Eigenschaften an praktisch jede Methode (dh Kunde, Bestellung usw.).

Wäre dies die richtige Art, Fehler zu behandeln und an den Client zurückzuschicken?

Es erscheint nicht an der Stelle, jeden Fehler zu den über der Methode übertrafen Attributen hinzufügen zu müssen.

Dh:

[OperationContract]  
[FaultContract(typeof(NullFault))]  
[FaultContract(typeof(InvalidDataFault))]  
[FaultContract(typeof(ArguementFault))]  
[FaultContract(typeof(RangeFault))]  
void CreateCustomer(Customer customer);  

Was ist mit einem GenericFault? Wie würden Sie mit Geschäftsregel -Fehlern umgehen? IE: Der Kunde existiert bereits, zu viele Werbebuchungen, nicht an diesen Bereich, die Zahlungsmethode nicht akzeptiert usw.?

Bitte lassen Sie mich wissen, ob diese Methode ordnungsgemäß ist oder ob es eine andere akzeptierte Lösung gibt und wie Sie mit der Situation der Geschäftsregel umgehen würden.

War es hilfreich?

Lösung

Die Rückgabe eines Fehlers ist der richtige Weg, dies im Allgemeinen zu tun. Sie sollten sich jedoch auch fragen, was das Kundenprogramm mit den Informationen zu tun hat, die Sie in einem Fehler zurückgeben. Wenn der Kunde nur wissen muss, dass ein Fehler passiert ist, ist nur ein einziger Fehler erforderlich. Dieser Fehler könnte Nachrichtentext enthalten, den der Client seinem Benutzer anzeigen könnte.

Wenn der Kunde unterschiedliche Maßnahmen ergreifen muss, basierend darauf, ob es sich um einen Nullfault oder ein Entfernungsfest handelt, benötigen Sie dann separate Fehler. Aber wenn es keinen Unterschied zwischen einem und anderen gibt, speichern Sie sich und die Kundenprogramme einige Zeit und Mühe und definieren Sie nur einen einzigen Fehler.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top