Подтвердить что ты не робот

Что бы вы использовали для уровня проверки бизнеса?

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

От Microsoft:

Открытый исходный код:

У кого-либо были какие-либо особые успехи или неудачи с любой из этих технологий (или любой, что я не перечислял), или любые мнения о том, что они считают наиболее подходящими для проверки бизнес-правил.

Изменить: Я не просто спрашиваю об общей длине строки проверки < 200, почтовый индекс - 5 цифр или 5 + 4, но предположим, что механизм правил фактически будет задействован.

4b9b3361

Ответ 1

Решение, основанное на кодексах и правилах, является вопросом компромиссов, ИМХО. Несколько примеров:

Преимущества кода

  • Потенциально более высокая производительность.
  • Использует существующие навыки разработчиков.
  • Не нужно использовать отдельные инструменты, механизмы времени выполнения и т.д.

Преимущества механизма правил

(Возможности различаются в разных механизмах правил.)

  • Правило DSL, доступное для записи (или, по крайней мере, удобочитаемое) для бизнес-пользователей.
  • Эффективные и срочные свойства, которые позволяют автоматически планировать правила.
  • Гибкая отчетность из репозитория правил поддерживает улучшенный анализ и аудит поведения системы.
  • Так же, как механизмы базы данных изолируют проблемы содержимого/отношения данных от остальной системы, механизмы правил изолируют проверку и политику от остальной части системы.

Ответ 2

Измененная версия правил структуры CSLA.

Многие из двигателей других правил имеют обещание: "Конечный пользователь может изменять правила в соответствии с их потребностями".

Bahh. Очень немногие пользователи будут изучать сложности формата документа правил или быть в состоянии понять сложности и последствия их изменений.

Другое обещание - вы можете изменить правила, не изменяя код. Я так говорю? Изменение правила, даже столь же простое, как "это поле не должно быть пустым", может оказать очень негативное влияние на приложение. Если те поля, где ранее разрешено быть пустым, теперь у вас есть куча недействительных данных в хранилище данных. Кроме того, современные приложения либо основаны на сети, либо распределены/обновлены с помощью технологий, таких как click = один раз. Таким образом, обновление нескольких компонентов так же просто, как обновление файла правил.

Итак, поскольку разработчик все равно будет модифицировать их и потому, что они являются основными для операций с объектами Business, просто найдите их в одном месте и используйте силу современных языков и фреймворков.

Ответ 3

Мне не нравились правила и блоки проверки, предоставленные Microsoft (слишком сложные и негибкие), поэтому мне пришлось строить мои, основываясь на опыте с настраиваемыми бизнес-процессами.

После нескольких итераций проект наконец-то вышел из Open Source (лицензия BSD) и зарекомендовал себя в производственных системах. Основные функции .NET Application Block для валидации и бизнес-правил:

  • Просто начать с
  • Правила для объектов домена
  • Повторяемость правил
  • Предопределенные правила проверки.
  • Расширяемость поведения
  • Надлежащее размещение объектов
  • Предназначен для проверки уровня DDD и UI
  • Несколько уровней отчетности
  • Производственно-активная разработка
  • Маленькая кодовая база
  • Открытый исходный код

Вот как выглядит простая привязка правил на уровне пользовательского интерфейса:

Binding Rules to UI

Обратите внимание, что в текущей реализации нет DSL на данный момент. Синтаксис С# достаточно выразителен сам по себе, поэтому не было необходимости добавлять Boo-based DSL сверху.

Ответ 4

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

Ответ 5

Я экспериментировал с Workflow Foundation, использовал EntLib и написал свой собственный механизм правил.

В небольших приложениях, где мне действительно нужно выполнить проверку на основе UI, чтобы гарантировать, что недопустимые данные не проникают в БД, я обращаюсь к блоку валидации EntLib. Он прост в использовании и требует только минимального количества кода в моих объектах домена, плюс он не испортит NHibernate или что-то еще в моем стеке технологий.

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

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

Ответ 7

Try

http://rulesengine.codeplex.com

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

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

У этого есть плагин к Asp.Net MVC (только серверная).

Существует также еще один проект под названием Polymod.Net, который использует RulesEngine для обеспечения самонастраивающегося пользовательского интерфейса, как показано на скриншоте!

Ответ 8

Блок проверки работоспособности корпоративной библиотеки обеспечивает очень похожий подход к AOP и позволяет мне сделать вещи как в 3.1, так и в 4.1 из моего опыта.

Ответ 9

Я рекомендую использовать CSLA Framework. Не только для проверки, но и для других функций.