Я не хочу видеть, как хорошая награда тратится впустую, поэтому я попытаюсь ответить на свой вопрос, используя имеющуюся у меня информацию.
[ Задержка ]
Измерение фактической (на проводе) задержки и скорости с помощью Silverlight невозможно, поскольку у нас нет доступа к сокетам TCP и мы не можем получить доступ к таким низкоуровневым интерфейсам из песочницы.Это также убивает «TCP SlowStart». При этом можно определить задержку WCF и пропускную способность Goodput.
Служба WCF
2 using System;
3 using System.Net.NetworkInformation;
4 using System.Text;
5
6 public class Service : IService
7 {
8 public bool PingNetwork()
9 {
10 return true;
11 }
12 }
А на стороне клиента:
using System;
using System.Windows;
using System.Windows.Controls;
using PingDemo.PingServiceReference;
namespace PingDemo
{
public partial class MainPage : UserControl
{
private ServiceClient client = new ServiceClient();
private DateTime PingStart = new DateTime();
public MainPage()
{
InitializeComponent();
client.PingNetworkCompleted += new EventHandler(client_PingNetworkCompleted);
}
void client_PingNetworkCompleted(object sender, PingNetworkCompletedEventArgs e)
{
if (e.Error == null && e.Cancelled == false)
{
MessageBox.Show("Ping Status: " + e.Result);
}
}
private void btnPing_Click(object sender, RoutedEventArgs e)
{
if (client == null)
{
client = new ServiceClient();
}
PingStart = DateTime.UtcNow();
client.PingNetworkAsync(txtHostIP.Text.Trim());
TimeSpan Est_RoundTripTime = DateTime - PingStart; //may need to look up exact syntax
}
}
}
[Загрузить загрузку]
Аналогично тому, как латентность определяется с помощью хоста службы WCF, скорость загрузки и загрузки может бытьоценивается путем загрузки известного (несжимаемого) набора данных клиенту и обратно.
В следующем блоге обсуждается подход для отправки больших данных через WCF.Это можно использовать для вычисления скорости, с которой данные отправляются / передаются, используя метод, аналогичный описанному выше.
http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html