有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JavaScript如何编写一个既可以在java中也可以在C++中解析的脚本

我们有java和C++实现我们的产品,它是一个分布式消息系统。

我正在编写一个框架来跨多个服务器运行系统测试。我需要我们的“测试协调器”流程向每个服务器发送指令,告诉它该做什么(例如,发送100条示例消息,或等待消息等)

我真的希望通过向每个服务器发送包含其指令的脚本来实现这一点。这允许我创建哑测试服务器,测试指令中嵌入了所有智能

如果我所有的服务器都是Java,我会用Groovy或类似的语言编写。但是我希望我们的C++实现能够解析同一个脚本。我想知道是否可以执行Javascript来调用Java/C++类来发送消息等

有没有一种简洁的方法可以做到这一点

如果所有这些都失败了,我将创建一个XML格式来声明性地包含测试参数(而不是强制包含测试指令)。但这需要测试服务器包含比我希望的更多的测试特定智能

感谢您的建议


共 (4) 个答案

  1. # 1 楼答案

    C++Java的JavaScript解析器可用,因此这绝对是您可以使用的东西;然而,我认为这不是一个好主意:Javascript代码当然可以与Java codeC++ code交互;问题是,如果你希望JavaScript代码不知道它是在C++还是java基础上运行的,从java调用C++的话,实际上并没有什么意义,因为这些调用又是语言-(甚至是引擎)特定的。p>

    更简单的解决方案可能是使用您所说的声明性格式,但我不会选择XML,除非数据需要与更广泛的受众交换;相反,我会使用JSON,它在JavaC++上得到了很好的支持

    最好的解决方案(尽管可能也是涉及最高努力的一个)可能是开发自己的DSL(领域特定语言),以及C++和java中的解析器。p>

  2. # 2 楼答案

    也许你可以看看卢阿。它在C++中得到很好的支持,而且似乎也支持java(参见this question

  3. # 3 楼答案

    这是一种互操作性WSDL最初设计用于促进。我不知道为什么要发明一种XML格式来实现SOAP已经实现的功能。我是说,你可以,但对下一个人来说,这将是一场维护的噩梦。另外,引入另一种编程语言(客户端,除非您想在混合中添加nodej)作为两者之间的粘合层会增加系统的复杂性

    我要做的是:

    1. 定义高级语言不可知接口
    2. 在爪哇和C++中实现接口的实现

    如果您正在向服务器发送命令,那么可以考虑使用Command pattern来封装已知命令集(我假设在您的需求中列举了这组命令)。您可以使用“组合”命令使用批处理命令

    然后,您的“测试协调器”将构建一个批处理命令,使用声明的服务将其发送到所选的服务器,并且您的实现可以以特定于语言的方式处理这些命令。根据系统具有的命令类型,可能适合将每个实现委托给Ant或Make

  4. # 4 楼答案

    你也可以考虑使用CORBA……:)p>