我在Windows 7上,因此我没有使用WebSockets。我试图通过CustomBinding将.NET 4.5的NetHttpBinding模仿到.NET 4.0。
但是,使用我当前的CustomBinding,我无法接近性能。
你能帮助我获得正确的配置以获得最快的速度吗?
注意:传输必须是HTTP,编码应该是二进制(无压缩)
<customBinding>
<binding name="netHttp" receiveTimeout="00:10:00" sendTimeout="00:10:00" openTimeout="00:10:00">
<reliableSession />
<compositeDuplex />
<oneWay />
<binaryMessageEncoding maxReadPoolSize="2147483647" maxWritePoolSize="2147483647" maxSessionSize="2147483647">
<readerQuotas maxBytesPerRead="2147483647" maxArrayLength="2147483647" maxStringContentLength="2147483647" maxDepth="1024"/>
</binaryMessageEncoding>
<httpTransport
maxReceivedMessageSize="2147483647"
maxBufferPoolSize="2147483647"
maxBufferSize="2147483647"
keepAliveEnabled="true"
allowCookies="false"
useDefaultWebProxy="false"
unsafeConnectionNtlmAuthentication="false"/>
</binding>
</customBinding>
表现比较:
NetHttpBinding(.NET 4.5)
Wcf.GetSimpleMessage
- Average: 332173.2 ticks [33.21732ms]
- Min: 22066 ticks [2ms]
- Max: 641235 ticks [64ms]
- [10] Instances
- Output:
A simple message for Marc.
Wcf.GetObjectMessage
- Average: 60384.4 ticks [6.03844ms]
- Min: 35128 ticks [3ms]
- Max: 95546 ticks [9ms]
- [10] Instances
- Output:
Request: [ LastID: 0, PageSize: 1000, Name: Any, ID: 0 ]
Wcf.GetFiles
- Average: 487740.7 ticks [48.77407ms]
- Min: 47447 ticks [4ms]
- Max: 939283 ticks [93ms]
- [10] Instances
- Output:
Result: [ FileName: css.pdf, Size: 1163024 bytes ]
CustomBinding(.NET 4.0)
Wcf.GetSimpleMessage
- Average: 2722518.8 ticks [272.25188ms]
- Min: 1118405 ticks [111ms]
- Max: 4545144 ticks [454ms]
- [10] Instances
- Output:
A simple message for Marc.
Wcf.GetObjectMessage
- Average: 1230078.4 ticks [123.00784ms]
- Min: 567742 ticks [56ms]
- Max: 1825263 ticks [182ms]
- [10] Instances
- Output:
Request: [ LastID: 0, PageSize: 1000, Name: Any, ID: 0 ]
Wcf.GetFiles
- Average: 1509024.3 ticks [150.90243ms]
- Min: 753773 ticks [75ms]
- Max: 2063954 ticks [206ms]
- [10] Instances
- Output:
Result: [ FileName: css.pdf, Size: 1163024 bytes ]