我们正在运行需要与另一个进程快速通信的服务.目前,我们在缓冲模式下使用WCF NetNamedPipeBinding来调用服务中的方法,这似乎提供了可用WCF绑定的最小开销.使用托管代码有更快的方法吗?
编辑:以下建议的聚合请求是已考虑的选项.实际上,我们想知道是否存在一个替代API,用于使用命名管道优于WCF的进程间通信.
如果您正在使用WCF,那么命名管道是在本地系统上进行通信的最快方式.
如果你在那里抛出大量数据,你可以查看流式传输API(只需添加一个System.IO.Stream作为参数,而不是传递数组或字符串等)
同样,对于性能,您的托管模型也非常重要,就您的服务实例模式而言.当你通过代码示例进入他的书中时,Juval Lowy关于WCF的书实际上非常好.
编辑:在回复您的评论时,请查看您可以应用于服务定义的"ServiceBehaviour"属性.(不是你的IServiceInterface描述,而是你的类的具体实现).
您可以通过PerCall,PerSession或Singleton将代码定义为实例.默认为singleton PerSession(感谢@RichardOD),并发模式设置为single,instanceContextMode设置为true,这允许您在Windows窗体上托管WCF,并且如果您不了解实例,则可以防止您在脚中拍摄.
基本上,如果将其保留为默认值,则最终会得到一个单线程,顺序处理的WCF主机.
MSDN对每种类型的功能有一些合理的信息.