Weryfikacja po stronie klienta (weryfikacja w warstwach prezentacji)

Napiwek

Ta zawartość jest fragmentem książki eBook, architektury mikrousług platformy .NET dla konteneryzowanych aplikacji platformy .NET dostępnych na platformie .NET Docs lub jako bezpłatnego pliku PDF, który można odczytać w trybie offline.

.NET Microservices Architecture for Containerized .NET Applications eBook cover thumbnail.

Nawet jeśli źródłem prawdy jest model domeny i ostatecznie musisz mieć walidację na poziomie modelu domeny, walidacja nadal może być obsługiwana zarówno na poziomie modelu domeny (po stronie serwera), jak i interfejsie użytkownika (po stronie klienta).

Walidacja po stronie klienta jest doskonałym rozwiązaniem dla użytkowników. Oszczędza to czas, jaki w przeciwnym razie spędziliby na oczekiwaniu na rundę na serwerze, który może zwrócić błędy weryfikacji. W kategoriach biznesowych nawet kilka ułamków sekund mnożył setki razy każdego dnia sumuje się do dużo czasu, wydatków i frustracji. Prosta i natychmiastowa walidacja umożliwia użytkownikom wydajniejszą pracę i uzyskanie lepszej jakości danych wejściowych i wyjściowych.

Podobnie jak model widoku i model domeny są różne, wyświetlanie weryfikacji modelu i walidacji modelu domeny może być podobne, ale służy innego celu. Jeśli martwisz się o dry (zasada Nie powtarzaj siebie), należy wziąć pod uwagę, że w tym przypadku ponowne użycie kodu może również oznaczać sprzężenie, a w aplikacjach dla przedsiębiorstw ważniejsze jest, aby nie połączyć strony serwera po stronie klienta niż postępować zgodnie z zasadą DRY.

Nawet w przypadku korzystania z weryfikacji po stronie klienta zawsze należy zweryfikować polecenia lub wejściowe obiekty DTO w kodzie serwera, ponieważ interfejsy API serwera są możliwym wektorem ataku. Zazwyczaj w obu przypadkach najlepszym rozwiązaniem jest to, że jeśli masz aplikację kliencką z perspektywy środowiska użytkownika, najlepiej jest proaktywnie i nie zezwalać użytkownikowi na wprowadzanie nieprawidłowych informacji.

W związku z tym w kodzie po stronie klienta zwykle sprawdzasz poprawność modelu ViewModels. Przed wysłaniem ich do usług można również zweryfikować wyjściowe obiekty DTO lub polecenia klienta.

Implementacja weryfikacji po stronie klienta zależy od rodzaju tworzonej aplikacji klienckiej. Będzie to inne, jeśli walidujesz dane w internetowej aplikacji internetowej MVC z większością kodu na platformie .NET, aplikacji internetowej SPA z tym walidacją kodowanym w języku JavaScript lub TypeScript albo aplikacji mobilnej kodowanej za pomocą platform Xamarin i C#.

Dodatkowe zasoby

Walidacja w aplikacjach mobilnych platformy Xamarin

Walidacja w aplikacjach ASP.NET Core

Walidacja w aplikacjach internetowych SPA (Angular 2, TypeScript, JavaScript, Blazor WebAssembly)

Podsumowując, są to najważniejsze pojęcia dotyczące walidacji:

  • Jednostki i agregacje powinny wymuszać własną spójność i być "zawsze prawidłowe". Zagregowane korzenie są odpowiedzialne za spójność wielu jednostek w ramach tej samej agregacji.

  • Jeśli uważasz, że jednostka musi wprowadzić nieprawidłowy stan, rozważ użycie innego modelu obiektów — na przykład przy użyciu tymczasowego obiektu DTO do momentu utworzenia jednostki domeny końcowej.

  • Jeśli musisz utworzyć kilka powiązanych obiektów, takich jak agregacja, i są one prawidłowe tylko po ich utworzeniu, rozważ użycie wzorca fabryki.

  • W większości przypadków nadmiarowa walidacja po stronie klienta jest dobra, ponieważ aplikacja może być aktywna.