Frage

Ich weiß, es ist möglich, Validierer zu verwenden Dateneingabe in der Präsentationsschicht einer Anwendung zu überprüfen (z regex, Pflichtfelder usw.) und eine Nachricht zu zeigen und / oder erforderliches Markierungssymbol. Datenvalidierung gehört im Allgemeinen in der Business-Schicht. Wie vermeide ich zwei Sätze von Validierungen auf Daten zu erhalten, die ich sammeln werde?

EDIT: Ich weiß, dass Präsentation Validierung gut ist, und dass es informiert den Benutzer, und dass es nicht unfehlbar. Die Tatsache bleibt, tut es nicht, dass ich effektiv die gleiche Sache an zwei Stellen bin Überprüfung?

War es hilfreich?

Lösung

Ja und nein.

Es hängt von der Architektur der Anwendung. Wir gehen davon aus, dass Sie den Aufbau einer n-Tier-Anwendung, da die überwiegende Mehrheit der Anwendungen in diesen Tagen neigen dazu, dieses Modell zu folgen.

Validierung in der Benutzerschnittstelle ist so ausgelegt unmittelbare Rückmeldung an die Endbenutzer des Systems bereitzustellen Funktionalität in den unteren Stufen zu verhindern, dass überhaupt in dem ersten Platz mit ungültigen Eingaben ausgeführt wird. Zum Beispiel würden Sie nicht einmal den Active Directory-Server ohne Benutzername versuchen wollen beide und ein Passwort kontaktieren Authentifizierung zu versuchen. Validierung an dieser Stelle spart Verarbeitungszeit beteiligt in ein Objekt instanziiert wird, ihre Einrichtung und macht eine unnötige Hin- und Rückfahrt mit dem Server, etwas zu lernen, dass man leicht durch einfache Daten Inspektion sagen kann.

Validierung in Ihrer Klassenbibliothek ist ein andere Geschichte. Hier Sie Validierung Geschäftsregeln . Während es kann argumentiert werden, dass die Validierung in der Benutzeroberfläche und die Validierung in den Klassenbibliotheken gleich ist, würde ich eher ablehnen. Validierung von Business Logic neigt weitaus komplexer zu sein. Ihre Regeln in diesem Fall differenzierter sein und Dinge erkennen, die nicht über die Benutzeroberfläche aufgelesen werden können. Zum Beispiel können Sie eine Regel durchzusetzen, die besagen, dass der Benutzer eine Methode ausführen darf erst nach all einer Klasse Eigenschaften ordnungsgemäß initialisiert wurde, und nur dann, wenn der Benutzer ein Mitglied einer bestimmten Benutzergruppe. Oder Sie können festlegen, dass ein Objekt nur modifiziert werden, wenn sie innerhalb der letzten 24 Stunden nicht geändert wurde. Oder Sie können einfach festlegen, dass ein String-Wert nicht null oder leer sein kann.

In meinem Kopf, aber richtig entwickelte Software verwendet einen gemeinsamen Mechanismus DRY zu erzwingen (wenn möglich) sowohl von der Benutzeroberfläche und der Klassenbibliothek. In den meisten Fällen ist es möglich. (In vielen Fällen wird der Code so trivial, es lohnt sich nicht.)

Andere Tipps

Ich glaube nicht, clientseitige (Presentation Layer) Validierung ist tatsächlich, nützliche Validierung; vielmehr, benachrichtigt er den Benutzer einfach von Fehlern der Server-Seite (Business Layer) Validierung finden. Ich denke, es als eine Komponente Benutzeroberfläche eher als eine tatsächliche Validierung Dienstprogramm, und als solche, ich glaube nicht, das sowohl gegen DRY.

EDIT: Ja, Sie die gleiche Aktion tun, aber aus ganz anderen Gründen. Wenn Ihr einziges Ziel zu DRY strikter Einhaltung ist, dann wollen Sie nicht beides zu tun. Doch beide, indem Sie, während Sie die gleiche Aktion durchführen kann, die Ergebnisse dieser Aktion werden für verschiedene Zwecke verwendet werden (tatsächlich die Informationen die Validierung gegen den Benutzer eines Problems benachrichtigt), und deshalb zweimal tatsächlich die gleiche Aktion durchführen Ergebnisse in nützlichen Informationen jedes Mal.

denke ich an Anwendungsschicht gut Validierungen mit mehreren Vorteilen ermöglicht. 1. Erleichtert Komponententests 2. Sie können mehrere Clients hinzuzufügen, ohne sich um die Konsistenz der Daten zu sorgen.

UI-Validierung kann als Werkzeug verwendet wird, schnelle Reaktionszeiten für die Endbenutzer zu liefern.

Jede Validierungsschicht dient einem anderen Zweck. Die Benutzeroberfläche Validierung wird verwendet, um die schlechte Eingabe zu verwerfen. Die Validierung von Business Logic verwendet, um die Validierung durchgeführt werden basierend auf Geschäftsregeln.

Für UI-Validierung können Sie RequiredFieldValidators und andere Validatoren in dem ASP.NET-Framework verwenden. Für Business-Validierung können Sie eine Validierungsmaschine erstellen, die das Objekt überprüft. Dies kann durch die Verwendung der benutzerdefinierten Attribute erreicht werden.

Hier ist ein Artikel, der erklärt, wie ein Validierung-Framework zum Erstellen eigenen Attribute:

http://highoncoding.com/Articles/424_Creating_a_Domain_Object_Validation_Framework.aspx

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