3

我们目前正在开发一个“数据驱动”的状态机应用程序。目前,状态流都在数据库中配置,但在我们当前的设计中,没有任何决策/业务逻辑可以在数据库中配置。正因为如此,代码也必须基本上“知道”状态流,所以在数据库中配置流真的没有意义。

我想到了一个设计,它允许我们使用依赖注入(Spring.NET)将状态模式连接在一起,但我不确定使这种数据驱动的最佳方法。我不是在数据库中配置类似代码的东西(如类或方法名称)的忠实粉丝,但我想到的设计需要我们在数据库中连接应用程序(类似于在 Spring XML 中的连接文件),所以这看起来很糟糕。

我们已经研究过使用 Windows WF,但我认为我们有点担心 WF 的未来,以及现在是否是采用它的好时机。我从来没有处理过规则引擎,所以我想知道这在这里是否有用。有没有人对如何实现这一点有任何建议?

4

2 回答 2

2

您最好的选择可能是将数据存储的行为与用于实现它们的技术分离。

实现这一点的方法是 DSL(领域特定语言)。提出一种可以抽象地表示业务逻辑的格式(即一种微语言),将其字符串存储在您的表中,并在代码中为它实现一个解释器。这样,如果你的底层技术发生变化,你只需要重新实现解释器。

我在 1980 年代中期开发了一个使用这种技术的应用程序,它被移植了好几次,只对所需的业务规则进行了微小的(和自动化的)更改。

于 2009-03-19T23:40:46.187 回答
1

有关特定领域的语言支持,请查看MSDN 中的此处。你也可以看看Irony,但这可能还不是生产代码的解决方案。

于 2009-03-20T00:14:15.077 回答