Как лучше всего определить доступную пропускную способность в .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.
Взгляните на них обоих и посмотрите, подойдут ли они вам.
Рой