请问 C#应用和 Python 服务之间有什么高效联通的方法吗

查看 63|回复 9
作者:crokily   
自己是学前后端开发的,所以不太懂桌面应用的开发,不同语言的代码之间要怎么连在一起使用
目前在开发一个简单的 WIN 端自用 AI 程序,因为大部分 AI 库都是 Python 的,所以就用 Python 写好了 AI 部分的功能逻辑。
然后 UI 想用 C#的 WINUI 库来开发,按前后端的思路就是启动个 python 后端,前端发 HTTP 请求。
但是桌面应用这么弄的话就感觉很丑陋,还单独启动个后端发请求,双方明明都在本地,应该会有更高效的方式才对。
问了下 AI ,说有 3 个方法,
1 个就是前后端那样发 0.0.0.0 的 HTTP 请求,
还有用不同语言兼容的库,什么.net 的 python 库 Ironpython 啥的,
还有说用 (IPC) 机制使用 命名管道 (Named Pipes)啥的。
但我并不知道哪个是业内常用的较好的手段,想请教一下各位。谢谢!

Python, ipc

wangritian   
go 语言中我用 cgo 启动 cPython 解释器直接执行过 python 代码,c#应该有类似的操作或者开源库吧
uqf0663   
如果是我,我选发 http 请求或者 ws 也行,不觉得丑陋,反而是如果接口设计得当,以后更换技术栈或者再融入更多语言进来会非常方便。
glcolof   
知乎上好像有大佬讨论过,同一台设备上,TCP 通信的效率与直接复制内存差不了多少。有需要的时候还能轻松的把后端部署到其它设备上,所以推荐用 TCP 。
OP 可以去知乎上找找看。
fgwmlhdkkkw   
https://devblogs.microsoft.com/commandline/af_unix-comes-to-windows/
ferock   
很多办法,
1. rpc 通讯
2. websocket 通讯
3. 第三方成熟协议,比如 redis 协议通讯
4. 本地文件

别说跨语言了,通语言跨进程不也一样蛋疼?
sujin190   
用命名管道呗
nananqujava   
http 通信是最好的,谁说丑陋?
nananqujava   
补充一下就像三楼说的,同一台机器上延迟,可以忽略不计,而且还有扩展性部署到其他的机器上
HFX3389   
本地应用 http 通信丑陋吗...
我记得 IDE 的一些插件甚至 IDE 本身的登录都是开本地端口然后让浏览器访问的呀。
您需要登录后才可以回帖 登录 | 立即注册

返回顶部