Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
构建使用多种编程语言(Python Java C#)开发web应用程序的基础架构_Java_Python_Architecture - Fatal编程技术网

构建使用多种编程语言(Python Java C#)开发web应用程序的基础架构

构建使用多种编程语言(Python Java C#)开发web应用程序的基础架构,java,python,architecture,Java,Python,Architecture,我在不同的地方寻找过这个,但我没有找到一个详尽的答案。假设我们用不同的语言编写了不同的模块,每个模块都实现了逻辑的某些部分。我们没有权限将它们重新编译为某种语言(例如使用JPython) 我在编程的这一部分是个真正的新手,所以很难找到描述这个问题的词汇。我似乎试图找到类似Maven的东西,但对于多语言和其他语言,模块可能是预编译的 这在理论上是可能的吗?我不确定我是否正确理解了这个问题,但我认为您希望在多种语言上构建web应用程序。我的第一个猜测是面向服务的编程。您可以在多种语言上构建服务,它们

我在不同的地方寻找过这个,但我没有找到一个详尽的答案。假设我们用不同的语言编写了不同的模块,每个模块都实现了逻辑的某些部分。我们没有权限将它们重新编译为某种语言(例如使用JPython)

我在编程的这一部分是个真正的新手,所以很难找到描述这个问题的词汇。我似乎试图找到类似Maven的东西,但对于多语言和其他语言,模块可能是预编译的


这在理论上是可能的吗?

我不确定我是否正确理解了这个问题,但我认为您希望在多种语言上构建web应用程序。我的第一个猜测是面向服务的编程。您可以在多种语言上构建服务,它们可以通过JSon或XML进行通信,这当然是可能的。例如,我使用以下组合开发了web应用程序:

  • Java(用于后端接口、API和性能敏感代码)
  • Clojure(用于服务器端的主web应用程序)
  • JavaScript(用于浏览器中的客户端代码)
总的来说,这非常有效,因为您可以根据每种语言的特定优势使用它们。虽然应该提醒您,它确实需要您对所有语言都有相当多的技能才能有效,而且它确实需要对您的环境进行更多的配置,以使一切工作顺利进行

我发现一些有用的技巧:

  • 非常清楚您使用每种语言的原因。例如,JavaScript可能严格限于浏览器中的客户端代码
  • 如果语言在同一个平台上运行,它会有很大帮助。例如,Clojure和Java都在JVM中运行,这使得互操作性更加容易,因为您不需要任何额外的代码来连接两者
  • 使用支持您打算使用的所有语言的IDE(在我的例子中是Eclipse)
  • 使用具有多语言支持的良好的构建系统。您希望能够执行包含所有语言的“一键构建”。IMHO Maven是实现这一点的最佳工具(特别是如果您使用Eclipse插件之类的工具与IDE集成)

    • 我认为rocco337面向服务的编程确实是个好主意。 但这种方法有一个小小的缺点。 由于所有这些HTTP请求,服务之间的通信量。 我听说亚马逊为此遭受了痛苦,但我想他们成功了,因为他们是巨人

      这也有它自己的缺点。 只要把这一个看成是又脏又快的选择

      我最近构建的Web应用程序是基于python、php和大量C模块的

      我混合它们的方式是使用简单的命令行和shell脚本。 python作为一种粘合语言非常有效

      所以基本上你要做的是

      A.异步方法。(当您的模块需要几秒钟以上才能完成其工作时)

    • 开线
    • 运行命令行应用程序(用java、C#或其他语言编写)
    • 在等待结果时显示所需的视图
    • 当您从命令行获得结果时,让用户重新加载或使用ajax使用结果刷新视图
    • B.同步方法。(工作相当简单)

    • 运行命令行应用程序
    • 等到你得到结果
    • 显示来自2的结果的用户结果视图

    • 祝你的项目好运

      谢谢你的回答,这真的很有帮助。还有其他方法可以解决这个问题吗?@sedos我也会选择SOA。另一种方法是使用类似CORBA的东西来调解进程间的通信。谢谢您的回答。但在您编写的案例中,您使用的语言都是在JVM上运行的。正如我在我的案例中发现的,我可以使用Jython来将Python放置到java字节代码和SWIG中,将java与C++连接起来。但是这个模块需要重新编译。如果服务托管在局域网中的服务器上,那么我看不到任何流量问题。。我应该把它当作开销来补偿。rocco337我也认为解决这个问题最好的可能和优雅的方法就是用你的方式。我只是在展示另一个想法你解释得很好,谢谢你的回答。它工作正常,之前的说法是rocco337 SOA方式的本地变体。我尝试使用他的变体,现在在根层的bundle(Maven Spring AspectJ)和Oracle的ready工具(SOA套件、BPEL流程管理器)之间做出选择。是否有人使用过这些工具并能给出建议?