用于客户机/服务器通信的命名管道或TCP

本文关键字:管道 TCP 客户机 服务器 通信 用于 | 更新日期: 2023-09-27 18:10:34

我的应用程序支持同一服务器进程(Windows Service)的多个实例,就像SQL server一样。

客户端/服务器通信只能在同一网络中进行。

我可以使用TCP,但是我必须为每个服务器实例配置单独的IP端口。然而,我可以简单地使用命名管道,这样我就不必考虑端口号,只需使用服务器实例的名称。

将不会有非常频繁和/或大数据客户端/服务器通信。这是一种ERP应用程序,平均每30秒只通信一次。

我还想阻止任何客户端/服务器通信网络外(内部网)。

什么是明智的选择?

更新:客户端和服务器端都是使用。net 4编写的,没有第三方客户端能够使用服务器。

用于客户机/服务器通信的命名管道或TCP

我在几个个人项目中使用。net 4.0命名管道(System.IO.Pipes),使用它们很愉快。你可以在整个内部网中使用命名管道,并且非常高效,所以我个人的建议是使用命名管道。

.net 4.0的命名管道客户端也利用底层的WinAPI,所以你也可以从你的。net应用程序与本地应用程序通信。

这取决于客户端的技术。

如果服务器和客户端都是完整的。net框架,命名管道听起来很好。

但是如果一些客户端不是。net框架(Web客户端,Silverlight或类似的东西),命名管道将是一个额外的痛苦,因为不是所有的客户端技术都有任何类型的网络连接或开箱即用的API来做你想做的任何事情。

概要:

  • 如果客户端和服务器都使用。net框架,则使用命名管道,并且它总是这样,并且没有计划实现与此场景不同的任何内容

  • 如果你想确保你的服务器可以与任何类型的客户端技术通信,请使用TCP。

不管怎样,你打算用WCF这样做吗?也许使用TCP或命名管道只是一个配置问题。查看此MSDN文章:

  • http://msdn.microsoft.com/en-us/library/ms733769.aspx