C# 用于客户端/服务器通信的命名管道或TCP
我的应用程序支持同一服务器进程(Windows服务)的多个实例,就像f.e.SQL server一样 客户端/服务器通信将仅在同一网络中进行 我可以使用TCP,但是我必须为每个服务器实例配置单独的IP端口。但是,我可以简单地使用命名管道,这样我就不必考虑端口号,只需使用服务器实例的名称 不会有非常频繁和/或大数据的客户机/服务器通信。它是某种ERP应用程序,平均每30秒只进行一次通信 此外,我还希望防止网络(intranet)之外的任何客户机/服务器通信 什么是明智的选择C# 用于客户端/服务器通信的命名管道或TCP,c#,.net,vb.net,tcp,named-pipes,C#,.net,Vb.net,Tcp,Named Pipes,我的应用程序支持同一服务器进程(Windows服务)的多个实例,就像f.e.SQL server一样 客户端/服务器通信将仅在同一网络中进行 我可以使用TCP,但是我必须为每个服务器实例配置单独的IP端口。但是,我可以简单地使用命名管道,这样我就不必考虑端口号,只需使用服务器实例的名称 不会有非常频繁和/或大数据的客户机/服务器通信。它是某种ERP应用程序,平均每30秒只进行一次通信 此外,我还希望防止网络(intranet)之外的任何客户机/服务器通信 什么是明智的选择 更新:客户端和服务器都
更新:客户端和服务器都是使用.NET 4编写的,没有第三方客户端能够使用服务器。这取决于客户端技术 如果服务器和客户端都是完整的.NET Framework,则命名管道听起来不错 但是,如果有些客户机可能不是.NET Framework(Web客户机、Silverlight或类似的东西),那么命名管道将是一件非常痛苦的事情,因为并非所有的客户机技术都具有任何类型的网络连接或现成的API来完成您想做的任何事情 总结:
- 如果客户端和服务器都使用.NET Framework,则使用命名管道,并且始终是这种方式,并且没有计划实现与此场景不同的任何内容
- 如果您希望确保服务器可以与任何类型的客户端技术通信,请使用TCP
此外,.net 4.0命名管道客户端还利用了底层WinAPI,因此您也可以从.net应用程序与本机应用程序通信。选择名称的方便性不应成为首选命名管道的原因。客户端将如何找到管道的名称?为什么不创建一个抽象的传输框架并允许使用命名管道或TCP?SQL Server正是这样做的。@Jonathan:或者使用一个像WCF(它是.NET的一部分)这样的现有服务器。我已经更新了我的问题。客户端和服务器都是用.NET4编写的。好吧,我的答案仍然有效:)但还是要感谢您更具体的介绍。