2011-01-31 40 views
1

我已經在流模式下實現WCF服務,通過Internet傳輸更大的文件。WCF文件流 - 時間問題

到目前爲止,這麼好。

出於統計目的,我想記錄一次傳輸需要多長時間以及傳輸了哪個大小。大小不是問題,但跟蹤轉移時間有點棘手。

爲了我的需要,我實現了一個從MemoryStream派生的DownloadStream類。 這個課程有兩個活動:第一個由開始閱讀觸發,第二個由完成閱讀觸發。它工作正常。 http://www.danflash.com/files/code/DownloadStream.txt

但是,如果客戶端(WCF客戶端)調用WCF方法來獲取流,會發生一件奇怪的事情。 在客戶端,我得到了流的引用,並可以順序讀取它。這意味着,我可以花時間從流中讀取數據,然後獲取傳輸的持續時間。

但是,如果我試圖在服務器端做到這一點,整個流將自動讀取,在任何客戶端開始讀取它之前。看來,流內容將被複制到內存中。

有沒有辦法跟蹤服務器端的傳輸時間?

回答

0

有效載荷是通常傳輸開始之前在存儲器中緩衝,以允許正確的內容長度報頭被髮送,整個淨荷被驗證,加密的有效載荷(如果消息加密啓用它是在發送有效載荷之前應用;與可以流傳輸的傳輸加密相對比),應用MTOM(發生在有效載荷構建之後)等轉換,並強制執行配額。

您或許可以通過WCF inspector更好地滿足時間。