我有一个在 IIS 7 中托管的双工语音和视频聊天服务,带有netTcpBinding
. 该服务的使用者是 Silverlight 客户端。客户端调用服务上的方法:SendVoiceAsync(byte[] buffer)
每秒 10 次(每 100 毫秒),服务应该 每秒也给客户回电话 10 次(以响应每次呼叫)。我已经在 LAN 中严格测试了我的服务,它运行良好,对于向服务发送语音/视频缓冲区的每 100 个呼叫,该服务在该时间段内使用接收到的语音缓冲区调用其他客户端 100 次。但是,当我通过 Internet 使用该服务时,它会变得非常缓慢、严重滞后并且经常给我一个超时错误。我注意到,通过 HTTP 接收回调的速率约为每次调用服务器的 1/10,因此对于服务的每 100 次调用,服务器调用客户端 10 次,这个数字应该是100(因为它在局域网中)或非常接近它的东西。
那么是什么导致服务在 HTTP 上变得如此滞后呢?我遵循了配置netTcpBinding
优化性能的一般准则,虽然它似乎在 LAN 中带来了好处,但在互联网上却很糟糕。感觉好像有什么东西阻止了客户端向服务发送回复,尽管我已经禁用了所有防火墙,并将托管服务的网站所在的端口4502-4535
和端口转发到服务器计算机。80
如果有帮助,我的服务已ConcurrencyMode
设置为Multiple
,并且已InstanceContextMode
设置为Single
。此外,我的服务操作都是一种方式,而不是请求回复。
谢谢你的帮助。