Я пытаюсь выбрать одну из сред проверки для крупного приложения, и хотя оба варианта кажутся заманчивыми, мне было интересно, есть ли какие-то конкретные плюсы и минусы, о которых я должен знать, прежде чем переходить к той или иной.
Какую среду проверки выбрать: 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).
У Enterprise Validation Block есть и несколько отрицательных сторон. В свойствах моей сущности оказалось 3 строки атрибутов, что ухудшило читабельность. Попытка добавить проверку с помощью операторов AND или OR также довольно болезненна.
Одна вещь, которую я обнаружил с блоками Enterprise Library, заключается в том, что они могут заставить вас использовать другие блоки, которые вам не нужны/не нужны. Например, проверка может использовать блок ведения журнала, но вы были довольны своей собственной системой ведения журнала. теперь ваше приложение регистрирует вещи по-разному. Тем не менее, мне понравился внешний вид блока Validation в Ent Lib. Я не играл с Spring.NET, хотя.
Common
, Validation
, ServiceLocation
, Unity
, Unity.Configuration
и Unity.Interception
.
- person Steven; 31.08.2010