Windows主机与Linux Docker容器之间的通信

4

进入图片描述我有以下问题。我在Windows主机系统上有一款软件,它在该计算机上模拟COM接口。现在我想在这个软件中提供一个API/套接字/管道,用于接受通过局域网传输的字符串。

提交软件应该是一个托管在Kubernetes中作为Docker容器(Linux)的.NET Core Web应用程序。

我可以使用哪种技术在Linux容器和Windows主机之间通信?

  1. 命名管道->我认为它们在Linux下不可用?
  2. 套接字?
  3. 尝试在Windows主机上打开Web服务器以通过HTTP进行访问?

你有什么想法,为什么你更喜欢某种解决方案?


你可以使用许多不同的方法。正如你所说,webservice是一个很好的方法。命名管道不会超出计算机范围,无论是虚拟的还是其他的,所以这个方法不适用。 - Prof. Falken
1个回答

2

Linux确实有命名管道,尽管不同操作的语义略有不同,但你会遇到的问题是,命名管道不能用于不同系统之间的通信。命名管道是在同一台机器上运行的进程之间的进程间通信。请注意,在这里,即使Windows主机和Linux客户端位于同一物理机器上,它们也被视为两个独立的系统。

TCP是套接字最通用的形式,也是连接两个操作系统的标准方法。如果你不知道为什么要使用其他协议,TCP通常是一个好选择,因为它能够连接几乎所有内容。

现在唯一的问题是你想使用哪种应用层协议,以及是否想添加任何安全层(即TLS)来加密和认证机器之间的连接。如果你有一个只需要传输简单字符串的简单服务,那么你可能可以直接使用TCP/TLS套接字,但是如果你想从各种事情中受益,例如通信请求和响应状态的标准化措辞、技术、库和框架,身份验证、乐观锁定、缓存、代理、会话管理、任意长度流编码等,则在HTTP/HTTPS之上构建通信是明智的选择。你会发现,现在很多服务都是作为Web服务构建的,因为当你需要扩展并利用这些功能时,它会让事情变得更加简单。


@LukasHieronimusAdler:不,这并没有改变我的答案。如果您的计算机能够运行Windows,则无疑它足以运行简单的TCP / HTTP服务器。您的计算机上可能已经运行了许多此类服务,提供各种系统服务。您可以相当容易地使用几乎任何语言/平台编写独立服务器,比您想象的要简单。我认为您可能有点过度思考了。服务器只是一个程序,用于侦听来自另一个程序/机器的请求。 - Lie Ryan
好的,我该怎么做呢?所以我需要一个适用于Windows 7/10的Windows服务,它可以创建自己的服务器。在.NET中,我应该选择哪种“项目”类型呢?WCF、.NET Standard还是Windows桌面?你能给我提供一个参考吗? - Lukas Hieronimus Adler
任何一种编程语言都可以用来编写服务器,但对于简单的服务器,您可能不需要GUI项目。这个教程解释了编写一个使用数据库和浏览器客户端的简单服务器的整个过程。 - Lie Ryan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接