当前位置:  开发笔记 > 编程语言 > 正文

与Windows服务通信的最快方法

如何解决《与Windows服务通信的最快方法》经验,为你挑选了1个好方法。

我们正在运行需要与另一个进程快速通信的服务.目前,我们在缓冲模式下使用WCF NetNamedPipeBinding来调用服务中的方法,这似乎提供了可用WCF绑定的最小开销.使用托管代码有更快的方法吗?

编辑:以下建议的聚合请求是已考虑的选项.实际上,我们想知道是否存在一个替代API,用于使用命名管道优于WCF的进程间通信.



1> Spence..:

如果您正在使用WCF,那么命名管道是在本地系统上进行通信的最快方式.

如果你在那里抛出大量数据,你可以查看流式传输API(只需添加一个System.IO.Stream作为参数,而不是传递数组或字符串等)

同样,对于性能,您的托管模型也非常重要,就您的服务实例模式而言.当你通过代码示例进入他的书中时,Juval Lowy关于WCF的书实际上非常好.

编辑:在回复您的评论时,请查看您可以应用于服务定义的"ServiceBehaviour"属性.(不是你的IServiceInterface描述,而是你的类的具体实现).

您可以通过PerCall,PerSession或Singleton将代码定义为实例.默认为singleton PerSession(感谢@RichardOD),并发模式设置为single,instanceContextMode设置为true,这允许您在Windows窗体上托管WCF,并且如果您不了解实例,则可以防止您在脚中拍摄.

基本上,如果将其保留为默认值,则最终会得到一个单线程,顺序处理的WCF主机.

MSDN对每种类型的功能有一些合理的信息.


@Spence.默认值不是Singleton,而是PerCall或PerSession,具体取决于通道是否支持会话.
推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有