【问题标题】:WCF Service hosted in a Console Application托管在控制台应用程序中的 WCF 服务
【发布时间】:2012-07-02 16:28:13
【问题描述】:

托管在控制台应用程序中的 WCF 服务可以处理多少负载?它能否像 IIS 上托管的 WCF 一样处理传入请求?

补充说明: 请求可以同时到达吗?

我有一个托管在控制台应用程序中的 WCF 服务。我从 Web 应用程序中调用此 WCF 服务。该网络应用可能同时有数百个请求。

我已经模拟了大量请求,但我无法确定托管 WCF 服务的控制台应用程序实际上是同时还是按顺序响应它们。

【问题讨论】:

  • 您可以使用类似 loadui 的方式加载测试服务。您还可以配置 wcf 以同时处理请求。一个快速的谷歌应该会让你上路。
  • @abatishchev 感谢您的编辑。

标签: c# wcf .net-4.0 console-application self-hosting


【解决方案1】:

WCF 服务的托管位置无关紧要。这一切都取决于绑定、端点、端点行为和服务行为设置,最后但并非最不重要的一点是,取决于您设置(通过属性)服务的实例化模式和并发类型的方式。

这些设置由ServiceHost 实例接管。即使它在控制台应用程序中运行,应用程序本身也只是ServiceHost 的容器,它是根据您提供的设置为您的 WCF 服务创建运行时环境的容器。

对于您感兴趣的内容,请参阅here(并发和节流)。还有,很extensive on WCF instance modes

出于性能原因,我建议您使用单例服务,您可以通过 InstanceContextMode 指定该服务。如果你有数百个请求进来,如果为每个请求创建一个服务实例,它不会对并发有任何好处。您必须通过检查您的所有服务操作是否都是线程安全的来分析您的情况是否可以使用单例。

【讨论】:

  • 在我的情况下,似乎单例是不可能的,因为很多应用程序每分钟会发出很多请求。
  • @KavehShahbazian:有多少请求并不重要。可能是数千/秒。只要您不在服务中保留任何状态或某种自定义会话(例如所有请求更改和读取某些数据的静态集合),就可以。
【解决方案2】:

托管在控制台应用程序中的 WCF 服务可以处理多少负载?

尽可能多地使用自托管 WCF 服务。

主机可以是控制台应用或windows服务,没关系,从负载角度来看它们是相同的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 2014-05-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多