首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在编程语言之间进行数据通信?

如何在编程语言之间进行数据通信?
EN

Stack Overflow用户
提问于 2021-12-24 09:11:36
回答 1查看 278关注 0票数 1

我正在考虑开始一个新的项目(桌面应用程序)。性能是必须的,我需要快速和可靠的语言,如铁锈。另一方面,我想使用操作系统提供的本地UI工具包,比如SwiftUI。

我对此做了一些研究,但没有发现任何具体的东西。

  • 我坚持使用锈蚀和斯威夫特,没有其他语言。
  • 本地API和打开端口不是一个选项。
  • 写文件然后用另一种语言阅读可能是一种选择,但我不认为这样做是好的做法和效率。
  • 使用一种进程间通信是一个很好的解决方案。但我不知道该怎么做,尤其是在两种不同的语言之间。如果有人能解释它,或者有一些关于它是如何从零开始实现的细节的参考。

总之,我想使用SwiftUI作为前端,使用Rust作为后端,具有最高速度的数据通信和最低的延迟。做这件事最好的方法是什么?

注:也许上面的一些解决方案是没有意义的。如果其中一些是错的,请纠正我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-24 10:55:36

我不知道斯威夫特,我以前用C++/C#做过一些IPC。

如果您想要“最高速度的数据通信和最低的延迟”,则除了C之外别无选择。这是非常快的,因为所有的代码都在一个进程中,并且您可以很容易地共享内存,而无需进行任何复制。

我不知道Swift,但是Rust代码可以提供can,它允许从任何支持code的语言中调用。您可以动态链接Rust代码(通过构建DLL/. to,方法是将机箱类型设置为cdylib)或静态链接(通过将机箱类型设置为staticlib)。您可以在这里阅读有关FFI的更多信息:https://doc.rust-lang.org/nomicon/ffi.html

如果您真的不需要“最高速度的数据通信和最低的延迟”(因为您曾经将文件视为选项),您可以考虑使用两个使用OS级别机制进行互操作的不同进程。最常见的方法是管道:

您可以尝试使用此机箱进行以下操作:管道

而且,在Unix上,您可以使用unix域套接字。这与网络套接字非常相似,但速度要快得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70471279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档