Какую среду проверки выбрать: Spring Validation или Validation Application Block (Enterprise LIbrary 4.0)?

Я пытаюсь выбрать одну из сред проверки для крупного приложения, и хотя оба варианта кажутся заманчивыми, мне было интересно, есть ли какие-то конкретные плюсы и минусы, о которых я должен знать, прежде чем переходить к той или иной.


person mr.sverrir    schedule 15.04.2009    source источник
comment
Интернет или рабочий стол? Используете ли вы другие блоки entlib? Не могли бы вы указать архитектуру?   -  person boj    schedule 15.04.2009
comment
Это для веб-приложения. Я мог бы использовать другие блоки entlib, такие как безопасность и ведение журнала, поскольку это потребуется в приложении. Я не буду использовать Unity, так как этот бит будет обрабатываться Spring.NET.   -  person mr.sverrir    schedule 15.04.2009
comment
У меня нет опыта работы с Spring.NET, но я большой поклонник блоков EntLib. Вы должны прочитать weblogs.asp.net/ricardoperes/archive/2009/03/11/ и davidhayden.com/blog/dave/archive/2007/02/28/PropertyProx   -  person boj    schedule 16.04.2009
comment
Большое спасибо! Я обязательно рассмотрю EntLib.   -  person mr.sverrir    schedule 17.04.2009


Ответы (2)


Проверка с атрибутами, на мой взгляд, не лучшее решение. Во-первых, вы должны сослаться на инфраструктуру в модели предметной области. Во-вторых, у вас нет возможности добавить проверку в скомпилированные классы. Наконец, вы не можете проверить сложную логику с атрибутами, и вам нужно сделать метод Validate для объекта, и это просто кажется неудобным.

На мой взгляд, проверка должна быть разделена на другой объект. Например, IValidator, где вы можете определить проверку как правила. Использование такой структуры, как xVal, помогает выполнять проверку на уровне представления с помощью JavaScript.

Вы можете найти xVal и FluentValidation для .NET. NHibernate Validator 1.2 alpha также имеет свободный синтаксис и интегрирован с xVal (не уверен насчет альфа, а должна быть 1.0).

У Enterprise Validation Block есть и несколько отрицательных сторон. В свойствах моей сущности оказалось 3 строки атрибутов, что ухудшило читабельность. Попытка добавить проверку с помощью операторов AND или OR также довольно болезненна.

person Marek Tihkan    schedule 27.05.2009
comment
Блок приложения проверки не обязательно использовать с атрибутами. Он содержит подход к проверке на основе конфигурации. Прочитайте эту статью: cuttingedge.it/blogs/steven/pivot/ entry.php?id=46 - person Steven; 09.02.2010
comment
Хотя я предпочитаю проверку на основе конфигурации, а не настройку на основе атрибутов по той же причине, что описывает Марек, VAB 5.0 позволяет вам определять проверки с использованием техники класса друзей, которая была введена DataAnnotations. - person Steven; 31.08.2010
comment
xVal использовался с ASP.NET MVC 1.0 и в настоящее время устарел. - person Michael Freidgeim; 29.06.2012

Одна вещь, которую я обнаружил с блоками Enterprise Library, заключается в том, что они могут заставить вас использовать другие блоки, которые вам не нужны/не нужны. Например, проверка может использовать блок ведения журнала, но вы были довольны своей собственной системой ведения журнала. теперь ваше приложение регистрирует вещи по-разному. Тем не менее, мне понравился внешний вид блока Validation в Ent Lib. Я не играл с Spring.NET, хотя.

person SteveM    schedule 21.04.2009
comment
У меня никогда не было этой проблемы с блоком приложения проверки. Можете ли вы указать код или место, где VAB вызывает блок приложений ведения журнала? - person Steven; 09.02.2010
comment
Я рассмотрел это более подробно, но нет прямых вызовов из сборок Validation Enterprise Library ни к одной из сборок ведения журнала. Я думаю, что ваше приложение напрямую использовало часть ведения журнала. В своих приложениях я публикую только те сборки, которые относятся к VAB. Для VAB 5.0 вам нужны: Common, Validation, ServiceLocation, Unity, Unity.Configuration и Unity.Interception. - person Steven; 31.08.2010
comment
Это могло быть в более старой версии. Когда мне показалось, что я увидел это, это была версия 2.0 Enterprise Library. - person SteveM; 03.09.2010