2011-05-14 198 views
10

Actualmente estoy escribiendo una aplicación .net con C# y quiero comprobar una serie de reglas y, en función de pasar o no las reglas, realizar una acción. Por lo tanto, estoy buscando implementar una solución genérica que pueda volver a utilizar siguiendo los buenos principios establecidos. Esto me ha llevado a la conclusión de que necesito escribir un motor de reglas.diseño del motor de reglas y ejemplos en C#

Tengo un buen conocimiento de C# pero esta es la primera vez que he tenido que escribir un motor de reglas así que como parte de mi investigación en el diseño y desarrollo de tales, estoy buscando consejos sobre la creación de tales un motor. ¿Qué sería aún mejor sería algún ejemplo que pudiera mirar? ¿Alguna aplicación de motor de reglas C# /. Net? ¿En qué capa de una arquitectura típica de 3 niveles deberían residir? Eché un vistazo rápido al codeplex y al código de Google, ¡pero ninguno saltó sobre mí! Entonces, alguna dirección sería genial.

Respuesta

3

Actualmente .NET tiene un motor de reglas de primera calidad pensado para flujos de trabajo (como está diseñado) pero puede usarse fácilmente fuera de flujos de trabajo: Debería ver "Windows Workflow Foundation Rules Engine" e inspeccionar el espacio de nombres System.Workflow.Activities.Rules.

Aprender cómo usar las reglas fuera de los flujos de trabajo requiere solo un poco de Google.

Editar: Si desea inspeccionar la arquitectura, aquí es dos motores prediseñados de código abierto:

+1

Sé que esto suena como una arrogancia terrible pero he descubierto que la biblioteca de reglas de WF es anémica y prácticamente inutilizable en comparación con un motor de dominio específico bien diseñado y personalizado. Realmente depende de la aplicación, por supuesto, pero no sé si lo recomendaría tan rápido. – Aaronaught

+0

Lo uso todo el tiempo con mis flujos de trabajo para aplicaciones de control industrial de ritmo lento, lo que me dio la impresión de que es una de las implementaciones más pragmáticas. Pero tal vez es porque estoy tan familiarizado con eso. Pero sé que esto es más como un típico argumento xUnit vs MSUnit .. –

+1

Quizás. Todo lo que sé es que cada vez que trato de usar WF (o las reglas de WF), siempre termino levantando las manos y diciendo "¿Por qué no solo * escribo el código * en lugar de calzarlo en este ¿cosa?" No estoy comparando WF con otros motores de flujo de trabajo, estoy seguro de que están bien, supongo que lo que digo es que la mayoría de los motores de reglas OTS, si no todos, son demasiado genéricos para ofrecer una gran ventaja sobre el código simple. + configuración. Tal vez es solo mi inexperiencia/mala experiencia hablando. – Aaronaught

0

construcción e implementación de su motor propias reglas pueden ser una tarea muy difícil con muchas cosas a considerar. El mayor problema que enfrentará es tratar de decidir qué reglas disparar y cuándo. No prestarle el cuidado adecuado puede generar problemas de rendimiento en la implementación. Recomiendo encarecidamente centrarse en el problema comercial y proporcionar a sus expertos en la materia (SME) la capacidad de definir y mantener sus propias reglas. Hay muchos buenos productos comerciales que hacen esto; el que he implementado con éxito varias veces es www.inrule.com. Tienen un buen conjunto de productos que pueden ayudar a resolver problemas simples y complejos. Espero que esto ayude.

Cuestiones relacionadas