0

Dies ist eine allgemeine Architekturfrage, keine Anfrage für Codebeispiele oder bestimmte Codelösungen.Service-Layer-Validierung - Ausnahmen auslösen oder Wrapper ServiceResponse-Typ

In einer vielschichtigen Anwendung haben wir 2 wichtigste Optionen von Handhabungen Service-Layer-Validierungen:

  1. Dienstschicht wirft Ausnahme, die sollte Präsentationsschicht fangen und zu handhaben.

PRO für diesen Ansatz ist leicht Service-Layer-Signatur, aber auf der anderen Seite ist es ein Potential Overhead von Ausnahmen alle und selbst nicht einen will die billigsten Optionen, da Ausnahmen um den Platz geworfen werden könnte zu überdenken diese Option.

  1. ServiceResponse Wrapper

Die Art so etwas wie (Pseudo-Code) sein einführen könnte:

class ServiceResponse{ 
    boolean IsOk; 
    array ErrorMessages; 
    object OkResponse; 
} 

Dies ist auch mit REST im Einklang Services (obwohl Frage ist nicht über sie) wo Http Antwort Nachricht tatsächlich als ein ServiceWrapper mit seinem StatusCode und Inhalt.

Welchen Ansatz bevorzugen Sie in Ihren Service-Layern und warum?

+0

Ich persönlich bevorzuge Ausnahmen für Service-Schichten. Hauptsächlich, weil Sie sie fangen und handeln müssen. Wenn Sie ein Objekt zurückgeben, müssen Sie den Status manuell überprüfen (und vielleicht vergessen), während Sie mit Ausnahme gezwungen sind, zu handeln. – centaurio

+0

ja, das ist ein sehr guter Fall für Ausnahmen und meiner Meinung nach vielleicht ein einziger guter Grund, so zu gehen, da sie einfach nicht ignoriert werden können. Andererseits weiß ich nicht, ob "etwas vergessen" ein guter Grund ist, um die Richtung der Umsetzung zu bestimmen, sei es auf die eine oder andere Weise. –

+0

Das ist wahr. Wenn Sie jedoch vergessen, zu überprüfen, ob die Rückgabe gültig ist (in der Regel nicht null), wird Ihre Anwendung in den meisten Fällen ungültig (Nullpointerexpektion) und sollte daher vermieden werden. – centaurio

Antwort

0

Wenn ich Ihre Frage richtig verstanden habe, ist Ihre Serviceschicht eine Art von Bibliothek, die Sie in Ihre UI-Ebene injizieren oder davon abhängig machen. Es ist besser, Ausnahmen auf dieser Ebene auszulösen. Wenn Sie sich jemals entscheiden ** die Services-Schicht physisch zu trennen und sie über eine API-Schicht (REST) ​​verfügbar zu machen. Sie können diese Ausnahmen immer in der API-Schicht abfangen und die HTTP-Antwort mit dem korrekten HTTP-Code und der entsprechenden Ausnahmebedingungsnachricht zurückgeben. Also bleib bei den Ausnahmen.

Verwandte Themen