Правила дизайна движка и примеры в C#

В настоящее время я пишу.net-приложение на C# и хочу проверить ряд правил и, основываясь на прохождении или сбое правил, выполнить действие. Поэтому я стремлюсь реализовать общее решение, которое я могу использовать повторно, придерживаясь хороших принципов. Это привело меня к выводу, что мне нужно написать движок правил.

Я хорошо знаю C#, но это первый раз, когда мне нужно было написать движок правил, так что в рамках моего исследования в области разработки и разработки такого механизма я ищу любые советы, касающиеся создания такого движка. Что было бы замечательно дальше, были бы какие-нибудь примеры, на которые я мог бы смотреть? Какие-нибудь C#/.NET правила движка приложений? На каком уровне в типичной 3-х уровневой архитектуре должен находиться такой уровень? Я быстро взглянул на кодекс и код Google, но никто не бросился на меня! Так что какое-то направление было бы здорово.

2 ответа

На самом деле.NET имеет первоклассный механизм правил, предназначенный для использования с рабочими процессами (в том виде, в котором он предназначен), но его можно легко использовать вне рабочих процессов: вы должны увидеть " Механизм правил Windows Workflow Foundation" и проверить System.Workflow. Деятельность. Правила пространства имен.

Изучение того, как использовать правила вне рабочих процессов, требует лишь небольшого количества поиска в Google.

Редактировать: Если вы хотите проверить архитектуру, вот два готовых движка с открытым исходным кодом:

Создание и реализация вашего собственного движка правил может быть очень сложной задачей со многими вещами. Самая большая проблема, с которой вы столкнетесь, - это попытаться решить, какие правила применять и когда. Несоблюдение этого требования может привести к проблемам с производительностью в реализации. Я настоятельно рекомендую сосредоточиться на проблеме бизнеса и предоставить вашим экспертам в данной области возможность определять и поддерживать свои собственные правила. Есть много хороших коммерческих продуктов, которые делают это; тот, который я успешно реализовал несколько раз, - www.inrule.com. У них есть хороший набор продуктов, которые могут помочь решить простые и сложные проблемы. Надеюсь, это поможет.

Другие вопросы по тегам