2011-01-09 12 views
2

Angenommen, die Business-Schicht wird vom Web verwendet und einige der Funktionen der Business-Schicht sind auch als REST-Webdienste für die Öffentlichkeit zugänglich.Hier wird die Eingabevalidierung durchgeführt

Würden Sie eine Eingabeüberprüfung für Geschäftslogik auf Präsentationsschicht (Web- oder REST-Web-Service) oder in Business-Schicht durchführen und die Validierungsfehler (durch Business-Schicht geworfen) auf der Präsentationsebene erfassen?

(insbesondere Federrahmen ist in Verwendung)

Antwort

3

Im Zweifelsfall ist es im Allgemeinen besser ist, Business-Logik (inkl Eingangsvalidierungslogik) in der Business-Schicht zu setzen, weil

  • Sie mit tun kann mehrere Präsentationsmedien (zB Web-GUI und API)
  • Sie wollen nicht, Code wiederholen und verwalten zwei Instanzen dieser Logik

Goo d-Frameworks ermöglichen es Ihnen, eine solche Logik an einem gemeinsamen Ort zu definieren und frühzeitige Erkennung von Problemen zu unterstützen (z. B. in der Präsentationsebene), was normalerweise eine intuitivere (schneller fehlgeschlagen), besser skalierbare Lösung (Front-End-Captures) ist.

Wenn Ihr Framework diese Funktionen jedoch nicht unterstützt, sollten Sie Konsistenz und Wartungsfreundlichkeit bevorzugen und die Logik in die Business-Schicht einfügen.

+0

Danke für das Aufzeigen dieser Kelly. Ich stimme diesen zu, aber das Problem ist, ich denke, ich kann nur ungültige Eingaben (werfen Sie einen Validierungsfehler etc) auf Business-Schicht, aber in der Präsentationsschicht kann ich eine mehr feinkörnige Validierungsfehler (Feld a und Feld b separat etc .). Um das zu tun, muss ich alle Validierungen in der feinsten möglichen Körnung auf die Business-Ebene anwenden und mich dann in der Darstellungsschicht entsprechend verhalten, nicht wahr? Ich denke an den Frühling, und ich bin mir nicht sicher, ob ich eine klare Lösung gefunden habe. Ich bin neu im Frühling, also kann ich einen Punkt vermissen. Jede Klärung ist willkommen. – mete

1

Ich empfehle die Implementierung der Validierung in allen Layern. Ich mache die Benutzeroberfläche, so dass die Benutzererfahrung hoch ist, mit sofortiger Rückmeldung. Aber ich vertraue niemals den Daten, die von der Benutzeroberfläche bereitgestellt werden (denke an einen Benutzer, der JS deaktiviert). Wie detailliert Ihre serverseitige Validierung ist, bleibt Ihnen überlassen. Aber Sie möchten vermeiden, dass Ihr Benutzer eine vollständige Rundreise zum Server durchmacht, wenn Sie können.

+0

+1 "vertraue niemals den Daten, die von der Benutzeroberfläche bereitgestellt werden". –

1

Verstöße gegen Geschäftsregeln sollten immer in der Business-Schicht passieren. Ob Sie eine proaktive Überprüfung zulassen oder nicht, ist eine Designentscheidung, und ob Sie eine eifrige Überprüfung des Clients durchführen möchten, um Rundreisen zu vermeiden.

Verwandte Themen