其中一些进程被管理(.Net 4.0),其他进程被管理(C Win32).这些进程需要共享数据.迄今为止我评估的选项是
> Tcp套接字
>命名管道
管道看起来好一点,但是对于我们的需求 – 两者的性能都是可以接受的.并且套接字给我们跨越机器(和操作系统 – 我们希望最终支持非Microsoft OSes)的灵活性在未来的边界,因此我们喜欢使用套接字.
然而,我的主要关注点是 – 如果我们使用Tcp套接字 – 我们是否有可能遇到防火墙的问题?有没有人部署桌面应用程序/程序使用TCP IPC和经验的问题?如果是这样 – 什么样的?
我知道这是一个相当公开的问题,我很乐意改写.但我真的很想知道我们有可能遇到什么样的潜在问题.
编辑:要多一点点光 – 我们只传输几个POD,int,float和string.我们已经建立了一个抽象层,提供了2个范例 – 请求/响应和订阅.传输层已被抽象出来,目前我们有两个实现 – 基于管道和基于TCP.
解决方法
TPC更可配置.关于防火墙,它们允许您打开/关闭通信端口.如果这不是一个选择或担心,另一个选项将是http(REST / json,web service,xml rpc等),但不知道http开销是否可以接受.确保使用真实世界的数据集(在测试中传递微不足道的数据)使开销似乎不合理 – 通常,与现实世界数据集相比是一个较小的数据集).
msdn的其他信息:
In a fast local area network (LAN) environment,Transmission Control
Protocol/Internet Protocol (TCP/IP) Sockets and Named Pipes clients
are comparable in terms of performance. However,the performance
difference between the TCP/IP Sockets and Named Pipes clients becomes
apparent with slower networks,such as across wide area networks
(WANs) or dial-up networks. This is because of the different ways the
interprocess communication (IPC) mechanisms communicate between peers.For named pipes,network communications are typically more
interactive. A peer does not send data until another peer asks for it
using a read command. A network read typically involves a series of
peek named pipes messages before it begins to read the data. These can
be very costly in a slow network and cause excessive network traffic,
which in turn affects other network clients.It is also important to clarify if you are talking about local pipes
or network pipes. If the server application is running locally on the
computer running an instance of Microsoft® sql Server™ 2000,the local
Named Pipes protocol is an option. Local named pipes runs in kernel
mode and is extremely fast.For TCP/IP Sockets,data transmissions are more streamlined and have
less overhead. Data transmissions can also take advantage of TCP/IP
Sockets performance enhancement mechanisms such as windowing,delayed
acknowledgements,and so on,which can be very beneficial in a slow
network. Depending on the type of applications,such performance
differences can be significant.TCP/IP Sockets also support a backlog queue,which can provide a
limited smoothing effect compared to named pipes that may lead to pipe
busy errors when you are attempting to connect to sql Server.> In general,sockets are preferred in a slow LAN,WAN,or dial-up
network,whereas named pipes can be a better choice when network speed
is not the issue,as it offers more functionality,ease of use,and
configuration options.For more information about TCP/IP,see the Microsoft Windows NT® documentation.