【问题标题】:closing WCF proxy关闭 WCF 代理
【发布时间】:2012-10-22 23:19:46
【问题描述】:

对于 WCF 代理,我一直遵循 try/Close/catch/Abort 的指导。我现在面临一个代码库,它在 MVC 控制器中创建代理并让它们超出范围。我认为我们需要编辑代码库以使用 try/Close/catch/Abort 但存在阻力。

有没有人知道我可以捕获的指标(例如 perfmon)来说明问题/好处。还是一份明确的参考资料,说明了无人能争辩的问题/益处?

【问题讨论】:

  • 您还需要争辩说您不应该在控制器中创建 WCF 代理。
  • ChrisBint:您反对在控制器中创建代理的原因是什么?
  • @JohnC 然后给出这个关于将代理交互包装到合适的 try/catch/abort 中的问题的性质,它将不可避免地以相当大的代码部分结束,理想情况下将其放置在另一个位置并从控制器调用。这不是真正的反对,更多的是建议。

标签: wcf


【解决方案1】:

您可以创建一个示例应用程序来模拟该问题。虽然我没试过你可以试试这个,

  1. 创建一个简单的服务并将maxConcurrentCallsmaxConcurrentSessions限制为5个。

  2. 创建一个客户端应用程序,并在其中调用服务方法而不关闭连接。

  3. 启动 6 个或更多客户端

  4. 查看从客户端打开新连接时会发生什么。可能客户端会等待一段时间,然后您会遇到一些异常。

如果客户端没有正确关闭连接,连接仍将在服务中保持打开状态,那么如果有 1000 个客户端一次连接到服务并保持连接打开,会发生什么情况?该服务有一个限制,它可以一次提供“n”个连接,因此该服务无法处理来自客户端的任何新请求,这就是关闭连接非常重要的原因。

我想你知道 WCF 服务中的using 问题。在我的应用程序中,我使用thread 中所述的扩展方法关闭了 WCF 连接。

【讨论】:

    【解决方案2】:

    您是否在服务器和客户端的命令提示符下尝试过简单的“netstat -N”? Yoy 可能会看到大量等待/挂起的连接,这可能会无缘无故地耗尽您的服务器资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 2011-09-08
      相关资源
      最近更新 更多