Какую платформу проверки выбрать: Spring Validation или Validation Application Block (Enterprise LIbrary 4.0)?
Я пытаюсь выбрать одну из платформ валидации для основного приложения, и хотя оба варианта кажутся заманчивыми, мне было интересно, есть ли какие-то конкретные плюсы и минусы, о которых мне следует знать, прежде чем переходить к одному или другому.
2 ответа
Проверка с атрибутами не является лучшим решением на мой взгляд. Во-первых, вы должны ссылаться на инфраструктуру в доменной модели. Во-вторых, у вас нет шансов добавить проверку в скомпилированные классы. Наконец, вы не можете проверить сложную логику с атрибутами, и вам нужно сделать метод Validate для объекта, и это просто кажется неудобным.
На мой взгляд, валидация должна быть разделена на разные объекты. Например, IValidator, где вы можете определить валидацию как правила. Использование фреймворка, такого как xVal, помогает выполнять валидацию на уровне представления с помощью JavaScript.
Возможно, вы захотите поискать xVal и FluentValidation для.NET. NHibernate Validator 1.2 alpha также имеет свободный синтаксис и интегрирован с xVal (не уверен насчет альфы, но 1.0 должен быть).
Блок валидации предприятия также имеет несколько отрицательных сторон. Свойства моей сущности в итоге имели 3 строки атрибутов и ухудшили читаемость. Попытка добавить проверку с помощью операторов И или ИЛИ также довольно болезненна.
Одна вещь, которую я обнаружил с блоками Enterprise Library, это то, что она может заставить вас использовать другие блоки, которые вам не нужны / не нужны. Например, Валидация может использовать блок регистрации, но вы были довольны своей собственной системой регистрации. теперь ваше приложение регистрирует вещи по-разному. Тем не менее, мне понравился внешний вид блока проверки в Ent Lib. Я не играл с Spring.NET, хотя.