使用脚本语言运行业务逻辑

时间:2016-05-27 07:10:03

标签: javascript google-app-engine architecture java-7

我们有一个Web应用程序,其中动态构建网页。动态意义上,整个UI在后端存储为JSON,前端相应地绘制UI。有些用例可以跨多种形式进行数据收集。显示表单的顺序取决于先前表单中输入的数据。

e.g。假设用户正在查看form1,并且可能存在业务逻辑,如age > 25显示form2其他form3

这是一个简单的例子,但它可能会变得复杂得多。并且逻辑因客户而异。此业务逻辑也可由第三方开发人员开发。

javascript是存储此业务逻辑的选项之一。但是,该应用程序是在Java7中构建的,并部署在Google App Engine中。性能和安全性是决定方法的重要标准。以下是我们现在考虑的方法:

  • 拥有单独的NodeJS应用程序并进行API调用以执行业务逻辑
  • 在JavaScript脚本引擎中运行Javascript,这是JDK 7的一部分

您能否建议在Java应用程序中执行javascript的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

Rhino是一个完全用Java编写的JavaScript的开源实现。它通常嵌入到Java应用程序中,以便为最终用户提供脚本。 这是一个链接 - http://www.mozilla.org/rhino/

答案 1 :(得分:0)

鉴于Javascript的全球性以及您所指的特定逻辑这一事实,我倾向于同意Alex关于JS的观点。也就是说有人抱怨犀牛的表现,所以我不会立即推荐。除非性能证明对您的用例很可怕,否则我建议您使用内置功能开始。然后,当您了解有关用例和特定性能配置文件的更多信息时,您可以根据需要转移到更好的解决方案。

以下是一些可以帮助您构建问题的其他想法:

  1. 您应该使用保姆线程向第三方开放任何脚本解释器。 (即,在消耗了一定量的资源后杀死它们 - 这不是保姆应该做的,但唉......)。任何完整的脚本语言都可以做一个简单的"而(true):wait()"

  2. 除非逻辑的复杂程度很大(例如,你在例子中说过一两个if-then'这可以用任何语言处理)语言不是安全的功能或表现,但对使用它的人的舒适和熟悉 - 即JavaScript应该很容易。如果你的定制团队知道py​​thon,那么继续使用嵌入式jython等。

  3. 我不会为了简单的自定义而启动单独的服务。除非复杂性很大,否则嵌入式引擎将是首选。启动一个单独的NodeJS服务器来运行2行脚本是一个相当大的浪费开销,devops复杂性和维护(想想每次运行一个dev实例来运行if-then) - 它不是这很难,但是当你忘记这一点,或者当你雇用一个对此并不了解并且将其剔除的初级开发者时,这可能是2年24小时马拉松调试练习的原因。