Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 与Windows服务通信的最快方法_C#_.net_Wcf_Service - Fatal编程技术网

C# 与Windows服务通信的最快方法

C# 与Windows服务通信的最快方法,c#,.net,wcf,service,C#,.net,Wcf,Service,我们正在运行一个需要与另一个进程快速通信的服务。目前,我们正在缓冲模式下使用WCF NetNamedPipeBinding来调用服务中的方法,这似乎提供了可用WCF绑定中最小的开销。使用托管代码有没有更快的方法 编辑:下面建议的集群请求是一个已经考虑过的选项。实际上,我们想知道是否有一种用于进程间通信的替代API优于使用命名管道的WCF。那么,您是受卷限制(即大消息)还是受往返限制(大量小消息) 对于大消息,考虑压缩(如果网络IO是开销)或更有效的序列化,如原Buff.net . 对于聊天型AP

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


编辑:下面建议的集群请求是一个已经考虑过的选项。实际上,我们想知道是否有一种用于进程间通信的替代API优于使用命名管道的WCF。

那么,您是受卷限制(即大消息)还是受往返限制(大量小消息)

对于大消息,考虑压缩(如果网络IO是开销)或更有效的序列化,如原Buff.net .</P>


对于聊天型API,考虑集束消息以减少往返行程。

< P>如果使用WCF,那么命名管道是本地系统上最快的通信方式。 如果您正在抛出大量数据,那么您可以研究流式处理API(只需添加一个System.IO.Stream作为参数,而不是传递数组或字符串等)

此外,对于性能,您的托管模型对于服务的实例模式也非常重要。尤瓦尔·洛伊(Juval Lowy)关于WCF的书实际上非常好,当你通过代码示例进入他的书中时

编辑:为了回应您的评论,请查看可以应用于服务定义的“ServiceBehavior”属性。(不是您的IServiceInterface描述,而是您的类的具体实现)

您可以通过PerCall、PerSession或Singleton将代码定义为实例。默认设置为singleton PerSession(感谢@RichardOD),并发模式设置为single,instanceContextMode设置为true,这允许您在windows窗体上托管WCF,并防止您在不了解实例化的情况下自残

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


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

它将更像是一个健谈的API。它的一个目的是为来自网页的自动完成请求提供服务,所以在这种情况下,集群将不是一个选项,但在其他情况下,这将使流量减少两到十倍。斯彭斯,你能充实一下你所说的“服务的实例模式”吗。目前,它作为自托管ServiceHost运行,而自托管ServiceHost又托管在标准Windows中service@Spence. 默认值不是单例,而是PerCall或PerSession,具体取决于通道是否支持会话。1点指向@RichardOD。很抱歉,我对默认的ConcurrencyMode single感到困惑,这正是我试图达到的目的,默认设置是零并发,这将影响可伸缩性。