Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
Programming languages 我们可以使用什么方法来互操作编程语言?_Programming Languages_Interop - Fatal编程技术网

Programming languages 我们可以使用什么方法来互操作编程语言?

Programming languages 我们可以使用什么方法来互操作编程语言?,programming-languages,interop,Programming Languages,Interop,我们可以做些什么来集成用一种语言编写的代码和用任何其他语言编写的代码?哪些技术更为人所知/鲜为人知?我知道有些/大多数语言可以编译成Java字节码,但我们对其余的怎么办?这取决于您想要的集成级别 您需要代码来共享数据吗?使用平台无关的数据格式,如JSON、XML、协议缓冲区、Thrift等 您是否需要能够要求以一种语言编写的代码为另一种语言的代码执行某些任务?使用web服务或类似的进程间通信层 您是否需要能够在单个进程内调用代码?此时的答案将完全取决于您所谈论的语言 我最常看到的两个是和。主要

我们可以做些什么来集成用一种语言编写的代码和用任何其他语言编写的代码?哪些技术更为人所知/鲜为人知?我知道有些/大多数语言可以编译成Java字节码,但我们对其余的怎么办?

这取决于您想要的集成级别

  • 您需要代码来共享数据吗?使用平台无关的数据格式,如JSON、XML、协议缓冲区、Thrift等
  • 您是否需要能够要求以一种语言编写的代码为另一种语言的代码执行某些任务?使用web服务或类似的进程间通信层
  • 您是否需要能够在单个进程内调用代码?此时的答案将完全取决于您所谈论的语言

    • 我最常看到的两个是和。主要区别在于(IIRC)Thrift打开了一个端口并在那里放置了一个服务器来封送不同语言之间的数据,而SWIG构建库接口文件并使用这些文件来调用指定的方法。

      您提到了“编译为Java”方法,还有“使用.NET语言”方法,那么让我们看看其他案例。您可以通过多种方式进行互操作,这取决于您要完成的任务,具体情况是一个接一个的。我想到的是

      • Web服务(SOAP或REST)
      • 文件系统中的文本(或其他)文件
      • 使用数据库中继状态或其他数据
      • MSMQ或MQSeries等消息传递环境
      • TCP套接字或UDP消息
      • 邮件槽和命名管道

      我认为在不同语言的程序之间有一些可能的关系

      共享一个运行时(例如C#和Visual Basic),并编译到同一个应用程序/进程中

      有一个调用另一个(例如调用C程序的perl脚本)

      通过机箱上的IPC或通过网络相互对话(例如管道和web服务)

      直接调用:

      • 直接调用(如果编译器理解彼此的调用堆栈)
      • 远程过程调用(90年代早期)
      • CORBA(90年代后期)
      • 远程方法调用(Java,目标环境中带有RMI堆栈/库)
      • .Net远程处理
      不太紧密的结合:

      • Web服务/SOAP
      • 休息

        • 不幸的是,你的问题相当模糊

          在同一进程中使用不同语言的方法通常是在可执行文件中嵌入VM或解释器。如果您需要在流程边界上进行沟通,那么还有几种可能性,其中许多已经在其他答案中提到


          我建议您改进您的问题,以获得更多有用的答案。

          在Web上,可以设置Cookie在ASP/PHP/JavaScript之间传递变量。在我之前参与的一个项目中,我们使用它创建了一个PHP文件,用于下载PDF,而无需从ASP应用程序中显示PDF在文件系统中的位置。

          几乎所有假装某种系统开发用途的语言都能够通过标准操作系统接口与外部例程进行链接,或者一个C函数接口。这就是我倾向于使用的格式。

          让谷歌的家伙来提及“协议缓冲区”:-)我故意同时包括了3种其他格式:)