2010-05-21 51 views
3

我正在使用WCF編寫客戶端和服務器代碼,我需要知道客戶端和服務器之間流量的「可感知」帶寬。我可以使用ping統計信息分別收集這些信息,但是我想知道是否有方法在WCF中配置通道堆棧,以便在執行我的Web服務調用時可以同時收集相同的統計信息。這在ICMP被禁用的情況下特別有用(例如ping不起作用)。檢測.net/WCF中的連接速度/帶寬

簡而言之,在進行與業務相關的常規Web服務調用(REST調用是精確的)時,是否有辦法隱式地收集連接速度數據?

當然,我可以將Web服務的往返時間與往返中使用的數據大小進行比較,以給出吞吐量的概念 - 但我不知道該感知帶寬有多少與網絡相關,或者僅僅是由於服務器處理延遲。我或許可以通過讓服務器發回代表服務器延遲的時間增量來解決這個問題,以便客戶端可以計算實際的網絡通信時間。如果更復雜的方法不可用,那可能是我的答案...

+0

這可能是在客戶端和服務器端的通道堆棧都可以用來告訴我在任一方向單向傳輸的有效載荷的真實總大小。這可能會顯着幫助我的吞吐量計算。 – 2010-05-21 22:21:20

回答

0

ICMP不是爲了嘗試這些連接速度統計信息而創建的,而是如果在兩個主機之間建立了有效連接。

我最好的猜測是在這些REST調用或ICMP流量中發送的數據量不足以計算感知的連接速度/帶寬。

如果按照這些指標進行計算,您將獲得非常大的帶寬統計數據或非常低的值,以Windows XP中的複製框爲例。爲了計算有效的吞吐量統計信息,您需要發送一個穩定的大量數據。

+0

我最需要這個吞吐量信息,恰恰是當我用服務器上的web服務調用敲擊服務器時。這可能足以使我在20%的感知帶寬的「正確」度量內 - 這可能足以滿足我的需求。 – 2010-05-21 22:22:42

+0

那麼如果你需要一個模糊的統計數據,你已經有了答案。你描述的過程聽起來不錯。只要刪除服務器處理您的請求所用的延時時間,您就可以得到時間,然後使用基本距離公式來獲得網絡速度。 – jpabluz 2010-05-21 22:34:24

+0

「距離公式」?你的意思是「數據量/規模隨着時間的推移?」 – 2010-05-25 16:35:54