gpt4 book ai didi

wcf - 多个服务主机有什么好处?一个 ServiceHost 是否支持一个端点上的多个同时连接?

转载 作者:行者123 更新时间:2023-12-04 10:58:53 27 4
gpt4 key购买 nike

我正在考虑自行托管我的 WCF 服务,而不是使用 IIS。对我来说,一个大问题是我是否需要像 IIS 那样实例化多个服务主机,或者一个就足够了。

除了隔离的安全原因之外,多个服务主机是否有任何好处?

一个服务主机可以同时在一个端点上服务多个连接吗?

最佳答案

没有任何好处或选择,真的 - 一个 ServiceHost (该类的实例)可以只托管一个服务,并且对于每个服务,您需要一个单独的服务主机。这是一个 1:1 的映射 - 总是,别无选择。

但当然,您的 Windows NT 服务或控制台应用程序可以有多个 ServiceHost同时事件的对象。如果您有一组逻辑上属于一起并且没有彼此就不能真正存在的服务,这将很有用——其中一个启动而另一个不启动是没有意义的。

是的,一个服务主机可以托管一个暴露多个端点的服务,并且多个客户端可以同时连接这些单独的端点,没问题。 WCF 运行时将启动多个工作线程以独立处理传入请求(您可以使用 ServiceThrottling 行为限制这些请求)。

要设置和控制您有多少并发调用和请求,您需要查看服务器端的 ServiceThrottling 行为。

<behaviors>
<serviceBehaviors>
<behavior name="serviceThrottled">
<serviceThrottling
maxConcurrentCalls="16"
maxConcurrentInstances="26"
maxConcurrentSessions="10"/>
</behavior>
</serviceBehaviors>
</behaviors>

当然,您需要在服务声明中引用该服务行为配置:
<service name="YourService" behaviorConfiguration="serviceThrottled">
.....
</service>

这些是默认值。解释如下(摘自 Dan Rigsby 的博文,已缩短):
  • MaxConcurrentCalls (默认 = 16) [Per-message] 可以主动处理的最大消息数。
  • 最大并发实例数 (默认值 = 26)服务中一次可以执行的最大 InstanceContext 对象数。对于 per-session 服务,这等于最大 session 数,对于 per-call 服务,它是最大并发调用数,对于单例,它是没有意义的。
  • 最大并发 session 数 (默认值 = 10) [Per-channel] 服务一次可以接受的最大 session 数。仅对基于 session 的绑定(bind)(wsHttp 或 netTcp)起作用

  • 当然也可以查看 Dan Rigsby's excellent blog post关于这个话题。

    关于wcf - 多个服务主机有什么好处?一个 ServiceHost 是否支持一个端点上的多个同时连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2131796/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com