gpt4 book ai didi

c# - WCF 并发?

转载 作者:行者123 更新时间:2023-11-30 16:26:06 24 4
gpt4 key购买 nike

我有一个部署到 IIS 7 和客户端的 WCF 服务。我认为该服务配置为处理并发。当我对两个客户端进行测试时,花费了两倍的时间。我已经花了好几个小时,但还没弄清楚我错过了什么。任何帮助/建议将不胜感激。 Service1.svc.cs 看起来像这样:

[ServiceBehavior( ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.PerCall)]
[CallbackBehavior(UseSynchronizationContext=false)]
public class Service1 : IService1
{
public byte[] DownloadFile()
{
byte[] byt = File.ReadAllBytes(@"C:\Temp\TestFile.pdf");
System.Threading.Thread.Sleep(1000);
return byt;
}
}

配置:

    <system.net>
<connectionManagement>
<add address="*" maxconnection="100"/>
</connectionManagement>
</system.net>
<system.web>
<compilation debug="true" targetFramework="4.0" />
<processModel autoConfig="false" maxWorkerThreads="1400" maxIoThreads="1400" minWorkerThreads="2"/>
<httpRuntime minFreeThreads="1000" minLocalRequestFreeThreads="1000"/>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="Service1Binding" maxBufferSize="2147483647" maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647" transferMode="Streamed">
<readerQuotas maxDepth="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" />
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="DocService.Service1">
<endpoint address="http://localhost/DocService/Service1.svc" binding="basicHttpBinding"
bindingConfiguration="" name="Service1Binding" bindingName="Service1Binding"
contract="DocService.IService1" />
<endpoint address="http://localhost/DocService/mex" binding="mexHttpBinding"
name="mexpoint" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
<serviceThrottling maxConcurrentCalls="100" maxConcurrentInstances="100" maxConcurrentSessions="100"/>
</behavior>
</serviceBehaviors>
</behaviors>

Transfer TimeLine in Fiddler

最佳答案

请求花费的时间比 1 秒的休眠时间和读取 10mb 文件的时间要长得多。他们应该在 1.1-2 秒内完成。这里有些可疑。

注释掉读取并返回一个新的字节[0]。现在需要1.0s吗?现在有并发了吗?

编辑:您使用的是什么客户端?

编辑 2:针对您的评论,文件传输并未以某种方式限制并发。 WCF 不关心您在服务方法中做了什么。它对文件一无所知。问题是你的磁盘太慢了,序列化 36mb 可能也很慢!你的服务器太慢了!您可以通过将 IO 替换为新字节 [1024*1024*36] 来找出磁盘或序列化的问题。

关于c# - WCF 并发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9182334/

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