Провірна перевірка та анотації даних [закрито]


123

Які оперативні відмінності між цими двома пакетами перевірки при використанні для перевірки ASP.NET MVC? Вони, схоже, мають подібні об'єкти, аж до їх назв. Чи один пов'язаний з іншим? У чому їх відмінності? Яким чином ці відмінності позначають різні випадки використання?


52
Цікаво також зазначити, що питання, які закриті як неконструктивні, зазвичай мають багато результатів, тому вони насправді корисні людям. З цією справою має бути щось не так
Дмитро Єфіменко

2
Я погоджуюся з тим, що такий тип питань корисний, але відповіді нижче здаються мені більше думками, а не фактами.
Ян Варбуртон

3
Я також цілком погоджуюся, однак, запитання "які відмінності" замість "які ваші вподобання", ймовірно, дозволить уникнути ситуації.
Джеремі А. Західний

Я думаю, що угода полягає в тому, що ви повинні сказати це так, щоб відповіді були менш обґрунтованими, а не фактичними. Не питай: "Що ти любиш?" але "Які між ними оперативні відмінності?" Тоді ви не отримуєте відповідей на кшталт "Я вважаю за краще" Вільне підтвердження ". але натомість речі, які на першому плані відрізняються першими, а теперішні висновки.
ruffin

Відповіді:


113

Я віддаю перевагу плавній валідації :

  1. Це дає мені набагато кращий контроль над моїми правилами перевірки
  2. Зробити умовну перевірку різних властивостей набагато простіше порівняно з Анотаціями даних
  3. Це відокремлює перевірку від моїх моделей перегляду
  4. Тестування одиниць набагато простіше порівняно з Анотаціями даних
  5. Він має чудову підтримку клієнтської перевірки більшості стандартних правил перевірки

6
Ще кілька пунктів цієї статті ( webdevbros.net/2010/12/03/… ): 1. Занадто багато анотацій дозволяють виглядати вашою моделлю некрасивою (аналогічно вашому пункту 3) 2. Краща повторна використання )
SiberianGuy

2
@Idsa Точка виконання звучить сумнівно. Рефлексія повинна відбуватися лише один раз для кожної моделі. Це передбачає хорошу реалізацію, я не знаю, як працює ця конкретна реалізація.
CodesInChaos

@CodeInChaos, схоже, ти маєш рацію. Але я буду тримати його там, оскільки я також не впевнений (і досить лінивий, щоб дізнатися) як це реалізується.
SiberianGuy

2
Я другий FluentValidation ... він хитається. З точки зору коду OCD мені подобається, що він знімає відповідальність за перевірку з поглядів і надає їм свої власні класи. Я пробував xVal деякий час ще в MVC1 ... Анотації даних були в порядку для простих речей, але як тільки у вас з'явилося більше ніж кілька правил, ви ледве зможете сказати, що повинен представляти ViewModel.
Брендон Лінтон

@Darin як ви передаєте повідомлення про помилки у подання? чи можете ви навести приклад, як це зробити?
Хайме Сангкап

32

Я чітко віддаю перевагу анотаціям даних, тому що ...

  1. усі правила перевірки можуть бути налаштовані в одному місці в коді (в модельному класі метаданих) і не потрібно повторювати більше ніде.
  2. існує чудова підтримка перевірки на стороні клієнта (знову ж таки - без повторення правил перевірки!) при використанні атрибутів Анотації даних .
  3. Атрибути анотації даних можна перевірити, щоб переконатися, що вони є.
  4. є приємні додаткові атрибути перевірки, створені спільнотою (наприклад, розширення анотацій даних ).

2
Я думаю, що більшості цих властивостей можна досягти за допомогою певної форми перевірки. Я не знаю, чи підтримує це бібліотека в ОП, але в принципі це можливо і не дуже складно.
CodesInChaos

Який сенс тестування на наявність атрибутів? Хіба це в основному не повторює правила перевірки?
Сем

30
@Sam: тестуючи, чи властивості прикрашені атрибутами анотації даних, ви не перевіряєте функціональність самого атрибута; ти просто переконаєшся, що він там є. Я повинен сказати, що зараз, через два роки, я на боці Даріна і згоден з його відповіддю.
Маріус Шульц

@Sam, тому що ви, мабуть, хочете дізнатися, чи хтось видаляє його з вашої моделі.
Стів

3
Чудовий коментар Маріус. Шкода, що більшість днів навчальних посібників EF зараз підтверджують перевірку, зроблену з анотаціями даних. Мене спочатку підключила простота анотацій, але незабаром після того, як я спробував застосувати правило користувальницької перевірки, я вскочив відразу на команду Fluent Validation ... До речі, шкода, що Дарин перестав публікувати :( Більшість його коментарі в StackOverflow помітні після більш ніж 5 років !!!
Кошера
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.