NoP*_*God 6 c# file-upload http httpwebrequest
我正在编写一个应用程序,使用HttpWebRequest将大文件上传到Web服务.
此应用程序将由具有各种Internet速度的各种人运行.
我以块的形式异步读取文件,并将这些块异步写入请求流.我使用回调在循环中执行此操作.我一直这样做,直到整个文件发送完毕.
在写入之间计算上载速度,随后更新GUI以显示所述速度.
我面临的问题是决定缓冲区大小.如果我将它设置得太大,连接速度较慢的用户将不会看到频繁的速度更新.如果我将它设置得太小,那么具有快速连接的用户将最终"锤击"读/写方法,从而导致CPU使用率飙升.
我现在正在做的是在128kb启动缓冲区,然后每10次写入我检查这10次写入的平均写入速度,如果它低于一秒钟,我将缓冲区大小增加128kb.如果写入速度低于5秒,我也会以类似的方式缩小缓冲区.
这非常有效,但这一切都让人觉得很随意,似乎还有改进的余地.我的问题是,有没有人处理类似的情况,你采取了什么行动?
谢谢
我认为这是一个很好的做法。我也用过大文件上传。但其中有一个小调整。我通过调用不同的服务来确定第一个请求中的连接速度。这实际上可以节省每个请求重新计算速度的开销。这样做的主要原因是
在慢速连接中,速度通常波动很大。因此,每个请求都重新计算它是没有意义的。
我应该提供恢复功能,用户也可以从上次结束的位置重新上传文件。
考虑到可扩展性,我曾经在第一个请求时修复缓冲区。让我知道是否有帮助
| 归档时间: |
|
| 查看次数: |
904 次 |
| 最近记录: |