.net - WCF ConcurrencyMode.Multiple连接最佳实践和缓存

标签 .net wcf performance multithreading caching

我有一个具有以下设置的WCF服务:

  • NetNamedPipeBinding
  • ConcurrencyMode。多个
  • InstanceContextMode.Single

  • 现在,我有一个以多线程方式访问此WCF服务的客户端。

    据我了解,我必须为每个线程打开与该服务的新连接,以避免线程互相阻塞。
  • 在这种情况下,Open()调用的价格是多少(服务在同一台计算机上)?
  • 我应该缓存/合并我的客户端类吗? (源自ClientBase)还是WCF为类似于SQLConnection Pooling的连接提供透明池?
  • 最佳答案

    不幸的是,WCF不会合并客户端连接。我发现Open()相对较慢,并且建立了我自己的缓冲机制,使客户端和服务器之间的少数持久连接保持打开状态。

    但是,有关此问题的一个常见陷阱是,即使在客户端和服务器之间发生了像超时这样简单的事情(或抛出了任何CommunicationException),客户端实例也会进入Faulted状态并且变得无法使用。那时,您必须销毁并使用新实例替换它。

    关于.net - WCF ConcurrencyMode.Multiple连接最佳实践和缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1609703/

    相关文章:

    c# - 计算算法时间

    c# - 匹配可选组的正则表达式

    c# - 在 MSMQ 终结点上使用消息检查器记录 WCF 请求和响应

    java - 如何有效地生成一组具有预定义分布的唯一随机数?

    WCF 返回自定义类型

    c# - WCF 的凭证委托(delegate)问题

    python - Perfplot 比较具有多个参数(不止一个)的多个函数的性能

    c# - 如何从数据库中选择最频繁的项目?

    c# - 抽象类设计 : Why not define public constructores?

    .net - 如何在 FlowDocument 中通过鼠标单击获取 TextPointer