保持在C#和JS中实现的相同逻辑同步

时间:2013-08-30 01:25:25

标签: c# javascript rule-engine business-rules cross-language

我们的发票需要有一个计算器,可以在网页用户界面和后端使用。这需要在Javascript和C#中实现相同逻辑的两个实现,真正的问题是在更改规则时保持这两个逻辑同步。

目前,我们在JS方面做的是通过ajax调用将所有重新计算请求发送到后端,以便使用C#中实现的计算器。这使我们的服务器很忙,我不喜欢这个想法。我认为应该有一个规则引擎或某个地方,我们可以利用它来将计算逻辑保持在C#或JS以外的语言中,并在前端和后端使用/解释它。

还有其他人遇到过同样的问题吗?任何想法都将不胜感激。

3 个答案:

答案 0 :(得分:1)

您可以尝试使用Haxe来实现规则引擎,然后将其交叉编译为JavaScript和C#。这将为您提供一个共同的实现基础,然后 - 在编译期间 - 将形成两种不同的语言输出。

免责声明:我还没有使用过Haxe所以我无法证明它是否适用于您的情况,但它支持两种语言作为目标。

答案 1 :(得分:1)

面对同样的问题并通过在javascript中实现逻辑然后在服务器上使用https://jurassic.codeplex.com/运行它来解决它。很好地工作。

答案 2 :(得分:0)

您可以使用任何决策即服务平台。它们通常将决策(具有关系和依赖关系的一组连接的业务规则)作为REST API服务公开。因此,您只需与服务进行交互即可执行和管理规则。

例如here is a sample如何通过在JavaScript中传递输入参数值来与决策服务进行通信以便执行。