题
让我们假设我处理,其涉及发送大量数据的服务。
如果我实现这个与WCF,WCF会扼杀基于每个请求的内存需要,以服务的服务?或者将我越来越连续内存不足异常每次我收到了大量的点击我的服务?
我来处理WCF之外的这个问题很好奇,我还是有点新的业务发展?
解决方案
在使用像安德鲁野兔绑定属性和readerQuotas建议将允许基本上是一个无限大最实用的用法,要记住的是,你会遇到的其他问题,如超时,如果你接受一个长期运行的命令,不管该服务是如何构建的(使用WCF与否)。
不管你的消息的大小是什么,WCF服务将需要节流的性能,因此它不进水。如果你正在主持它IIS或WAS,您将有额外的内置功能,这些主机的环境,这将使你的服务更“高可用性”。但是,你仍然需要注意并发问题。以下WCF配置提供了一种设置一些限制值的一个例子。
<system.serviceModel>
...
<behaviors>
<serviceBehaviors>
<behavior name="GenericServiceBehavior">
<serviceTimeouts transactionTimeout="00:09:10"/>
<serviceThrottling
maxConcurrentCalls="20"
maxConcurrentSessions="20"
maxConcurrentInstances="20"
/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
其他提示
WCF确实有一个默认的有效载荷大小限制将拒绝超过一定数目的字节的消息。这是配置当然在配置文件的结合部分的。这是一个带 basicHttpBinding
您展示的许多属性的原油例子提供给你:
<bindings>
<basicHttpBinding>
<binding name="testBinding" maxReceivedMessageSize="2147483647">
<readerQuotas
maxDepth="2147483647"
maxStringContentLength="2147483647"
maxArrayLength="2147483647"
maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
</basicHttpBinding>
我们的想法是,你可以创建你可以使用不同的场景很多不同的绑定。这是很好的,你可以微调如何您服务的使用,只增加了邮件大小限制需要它们的终点。
如果您正在使用NetTcpBinding的或NetNamedPipeBinding可以使用MaxConnections最大属性:
<bindings>
<netTcpBinding>
<binding name="myTCPBinding" maxConnections="15"/>
</netTcpBinding>
</bindings>
不隶属于 StackOverflow