将wcf dll与客户端和服务器类包装起来。
当我的服务器使用回调时,我的客户端需要10秒以上才能获得它。
发生了什么事?
只有最简单的NetNamedPipeBinding端点。
获得了大量代码,因此我不确定要在此处粘贴什么。
什么会导致这么长时间。编辑: 只有第一次回调需要10秒..
之后它可以快速运作。
任何人都知道为什么?
答案 0 :(得分:2)
我有类似的问题。这有助于我的情况:
NetNamedPipeSecurity security = new NetNamedPipeSecurity() { Mode = NetNamedPipeSecurityMode.None };
创建绑定时传递此安全对象:
new NetNamedPipeBinding() { Security = security }
最初的想法来自here。该线程是关于TCP绑定的,但最终提出的解决方案在我的案例中似乎对命名管道也有帮助。
更简单的是:
new NetNamedPipeBinding(NetNamedPipeSecurityMode.None)
答案 1 :(得分:1)
无意中,我发现了一个可以大大提高第一个WCF请求性能的设置。时间从>开始10秒到2秒。
在服务器和客户端上将绑定的TransferMode属性设置为Streamed:
var binding = new NetNamedPipeBinding(NetNamedPipeSecurityMode.None);
binding.TransferMode = TransferMode.Streamed;
然后将绑定传递到AddServiceEndpoint服务器端并传递到Channelfactory构造函数客户端。
答案 2 :(得分:0)
您是如何托管服务的?第一次调用需要创建启动缓慢的服务。
调试时我使用Studio的内置服务主机,这通常需要几秒钟才能自行排序。不要以为我曾经看过它花了10秒钟。
答案 3 :(得分:0)
没有任何帮助。我最后添加了一个假的呼叫decorater。在系统启动时发送第一个呼叫。