【发布时间】:2008-09-29 15:34:26
【问题描述】:
在 .NET 中确定可用带宽的最佳方法是什么?
我们的用户从各种远程接入点(有线和无线)访问业务应用程序,有时带宽可能非常低,具体取决于用户所在的位置。当应用程序运行缓慢时,问题可能是由于带宽不足而不是其他问题。
我希望能够运行某种服务,在可用带宽低于特定阈值时向用户发出警告。
有什么想法吗?
【问题讨论】:
在 .NET 中确定可用带宽的最佳方法是什么?
我们的用户从各种远程接入点(有线和无线)访问业务应用程序,有时带宽可能非常低,具体取决于用户所在的位置。当应用程序运行缓慢时,问题可能是由于带宽不足而不是其他问题。
我希望能够运行某种服务,在可用带宽低于特定阈值时向用户发出警告。
有什么想法吗?
【问题讨论】:
下载一个已知大小的文件并确定它需要多长时间是显而易见的。这样做的缺点是您需要浪费大量带宽才能做到这一点。此外,如果您想在吞吐量降至阈值以下时发出警报,则必须或多或少地连续运行测试。
恕我直言,我会在某些地方表现不佳,因为如果它确实发生了,你将无能为力。
对不起。
【讨论】:
没有实际使用带宽就没有简单的方法来测量带宽 - 这当然会使应用程序挨饿。不过要记住几点:
1) 问题实际上是带宽还是延迟?与带宽相比,您可以以更少干扰的方式测量延迟。
2) 应用程序是否都从同一个服务器(或至少同一个网络)运行?您可能会发现用户将与网络的某些区域建立良好的连接,但其他区域则不然。 (最后一英里可能会成为限制因素,但并非总是如此。)
【讨论】:
如果您要传输数据,只需对其进行测量。如果你想让它独立于你的服务器的速度,你也可以从某个地方下载一个引用对象。
【讨论】:
在不知道您的连接的确切性质或其使用方式的情况下,我知道有两个选项。
MultinetGetConnectionPerformance (http://msdn.microsoft.com/en-us/library/aa385342(VS.85).aspx)
系统事件通知服务 (http://msdn.microsoft.com/en-us/library/aa377538(VS.85).aspx)
两者都不是直接的 .NET 类,但可以很容易地在 .NET 中实现。
看看他们两个,看看他们是否适合你。
罗伊
【讨论】: