gpt4 book ai didi

c# - WCF 3.5 与 4.0 RESTful 服务性能对比

转载 作者:太空狗 更新时间:2023-10-30 00:57:02 25 4
gpt4 key购买 nike

我有一些使用 WCF 3.5 + RESTful Starter Kit 开发的 WCF RESTful 服务。我遇到过许多相同的提示,其中它不是非常高效并且不能很好地处理突发请求。我认为部分原因是 3.5 中的 RESTful 特性更像是一个社区插件。

既然 WCF 4.0 RESTful 服务已经推出了一段时间,我推测已经有人使用它进行开发并在生产环境中使用它。

我正在研究使用 WCF REST 服务模板 40(CS) 并查看是否有人对它有任何性能/可扩展性问题。我还查看是否对 WCF 3.5 和 WCF 4.0 的 RESTful 服务之间的性能/可伸缩性进行了任何比较。快速进行 Google 搜索并没有得到很多结果。

如有任何反馈,我们将不胜感激。

编辑

这里的每个请求是我的配置:

<bindings>
<webHttpBinding>
<binding name="TransportWeb">
<security mode="Transport">
<transport clientCredentialType="None"/>
</security>
</binding>
</webHttpBinding>
</bindings>

<services>
<service behaviorConfiguration="SecureBehavior" name="Service">
<endpoint address="" binding="webHttpBinding" bindingConfiguration="TransportWeb" behaviorConfiguration="REST" contract="IServce"/>
<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
</service>
</services>

<behaviors>
<serviceBehaviors>
<behavior name="SecureBehavior">
<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="REST">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>

最佳答案

在我们指责您构建的框架技术之前,请告诉我们更多关于您的特定实现的信息。我个人发现,如果使用得当,WCF 本身的每个方面都具有超乎想象的可扩展性。通常情况下,您会发现应该归咎于人们放在一起的特定实现/配置。

所以这里有一些关于您的实现的问题,希望能帮助社区更好地帮助您:

  • 您要处理什么样的请求?
  • 您正在使用入门套件的哪些功能?
  • 您的绑定(bind)是如何配置的?
  • 您是否正在流式传输任何二进制数据?
  • 您使用任何安全措施吗? (SSL、用户/密码等)
  • 您是否正在为任何请求执行任何长时间运行的任务?

更新 1

因此,从绑定(bind)的角度来看,一切看起来都很好,而且从您所解释的内容来看,您在这里似乎拥有一个非常“普通”的 WCF 服务。听起来您没有使用任何 the WCF 3.5 REST Starter Kit framework虽然从您的描述中完全可以看出,所以我不确定您是否遗漏了一些细节,或者您是否只是错误地说您使用它。

我注意到有一件事你没有做,但是在你的服务配置中设置了任何显式 <serviceThrottling> 值。默认情况下,.NET 3.5 中的最大并发调用数仅为 16。因此,根据您的通话时长和客户在任何给定时间点的饱和度,您可能会被耽搁在那里。如果你check out this MSDN section titled Optimizing WCF Web Service Performance您会看到一些建议实际配置 maxConcurrentCalls 的指南每个核心 16 个。这是 .NET 4 不同的地方,因为如果您没有指定自己的显式值,它们实际上会自动为您执行 16 * 核数。自然地,为您的应用程序找到最佳点的唯一方法是通过负载测试和玩弄数字。

综上所述,从您提供的信息中我看不出更多错误。如果您告诉我们更多有关您的 Web 服务内部结构的信息,也许我们可以就如何实现更好的性能提出一些更好的建议。据我们目前所知,您的瓶颈可能出在您与之交互的某个数据库中。

因此,回答这个问题的标题:在这一点上,我认为没有什么阻碍您,因为您使用的是 3.5。 4.0 中肯定有一些性能改进,但您并不是在这里谈论超大规模或其他任何事情,就像我说的那样,您实际上并没有根据您的描述进行任何复杂的 WCF 自定义或任何事情。

关于c# - WCF 3.5 与 4.0 RESTful 服务性能对比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157278/

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