WCF 3.5与4.0 RESTful服务性能

如何解决WCF 3.5与4.0 RESTful服务性能

| 我有一些使用WCF 3.5 + RESTful入门套件开发的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,它的每个方面都可以扩展到令人难以置信的程度。很多时候,您会发现应该归咎于具体的实现/配置。 因此,这里有一些有关您的实施的问题,希望可以帮助社区更好地帮助您: 您要提出什么样的要求? 您正在使用入门工具包的哪些功能? 绑定如何配置? 您是否在流式传输任何二进制数据? 您在使用任何安全性吗? (SSL,用户/密码等) 您是否正在针对任何请求执行任何长期运行的任务? 更新1 因此,从绑定的角度看一切都很好,从您的解释来看,这听起来像您在这里拥有了一个漂亮的“香草” WCF服务。不过,听起来似乎您并没有使用任何WCF 3.5 REST Starter Kit框架,所以我不确定您是否遗漏了一些细节或是否被误认为了说你用它。 我注意到您在服务配置中没有做的一件事是设置了任何显式的“ 1”值。默认情况下,.NET 3.5中的最大并发调用数仅为16。因此,取决于调用的持续时间以及客户端在任何给定时间点的饱和度,您可能会被阻止。如果您查看此MSDN标题为“优化WCF Web服务性能”的部分,您将看到一些指导,建议将ѭ2实际配置为每个内核16。那就是.NET 4与众不同的地方,因为如果您不指定自己的显式值,它们实际上会自动为您处理16 *个内核。自然地,找到适合您应用程序的最佳途径的唯一方法是通过负载测试并使用数字。 综上所述,从您提供的信息中我看不出有什么错。如果您向我们介绍有关Web服务内部的更多信息,也许我们可以就如何实现更好的性能提出一些更好的建议。就目前我们所知,您的瓶颈可能在于与您进行交互的某个数据库。 因此,请回答这个问题的标题:在这一点上,我认为没有任何阻碍您前进的因素,因为您使用的是3.5。在4.0中肯定有一些性能上的改进,但是您在这里并不是在进行大规模的讨论,而是像我说的那样,您实际上并没有进行任何复杂的WCF定制或根据您的描述进行任何事情。     ,        有关此问题的原因和解决方案的更多信息,请参见http://blogs.msdn.com/b/endpoint/archive/2011/05/04/wcf-scales-up-slowly-with-bursts-of-work.aspx。 。 根据您的评论,您确实有一个数据库调用。考虑到线程池的工作方式,您应该始终与需要高吞吐量的同步IO绑定操作区分开。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-