我即将深入研究一个面向规则的项目(使用 .NET 的 ILOGs 规则 - 现在是 IBM)。我已经阅读了一些关于如何设置规则处理以及如何与规则引擎交互的不同观点。
我看到的两个主要想法是集中规则引擎(到它自己的服务器场中)并通过 Web 服务 API(或在 ILOG 的情况下通过 WCF)针对场进行编程。另一方面是在每个应用服务器上运行规则引擎的实例,并在本地与它交互,每个实例都有自己的规则副本。
集中化的好处是可以轻松地将规则部署到集中位置。这些规则可以根据需要进行扩展,而不是在您每次扩展应用程序服务器配置时进行扩展。从购买的许可证的角度来看,这减少了浪费。这种设置的缺点是增加了进行服务调用、网络延迟等的开销。
本地运行规则引擎的优势/劣势与集中配置的优势/劣势完全相反。没有慢速服务调用(快速 API 调用),没有网络问题,每个应用服务器都依赖自己。管理规则部署变得更加复杂。每次将节点添加到应用程序云时,您都需要更多的规则引擎许可证。
在阅读白皮书时,我看到亚马逊正在为每个应用服务器配置运行规则引擎。他们似乎对规则进行了缓慢的部署,并认识到规则发布的滞后是“可以接受的”,即使业务逻辑在给定的时间段内不同步。
问题:根据您的经验,对于尚未在规则驱动的世界中花费太多时间的商店,开始将规则集成到基于 .net 的 Web 应用程序中的最佳方式是什么?