2012-10-03 40 views
3

我正在將大型壓縮文本文件轉換爲傳統的asmx Web服務。 我這樣做的理由是,該文件的大小是20MB解壓縮,4MB壓縮。asmx web服務上的大型二進制文件

這是方法。如有必要,我會提供更多信息。

[WebMethod] 
    public byte[] Transfer() 
    { 
     return File.ReadAllBytes(@"4MBFile.zip"); 
    } 

我使用的是C#和.NET 4.(我將項目的初始設置從2.0更改爲4.0)。

一個webmethod使用一種序列化,所以我想會有一些開銷。

我真的只有4MB? 如何測量這種開銷,如果有的話?

+0

downvote的解釋會很酷.. –

+0

嘗試運行提琴手,你應該能夠確切地知道你的傳輸有多大。正如CodeCaster所說,它取決於您的webmethod配置使用哪種協議。 – Vman

+0

我沒有downvoted,但可能是因爲你的問題不清楚。你問「這是正確的做法嗎?」 –

回答

3

XML Web Services通過標準的Web協議向Web用戶展示有用的功能。在大多數情況下,使用的協議是SOAP。

This question顯示XmlSerializer的,由ASMX Web服務使用默認的Base64編碼的二進制數據,所以是的,開銷會noticable。

我真的只轉移了4MB嗎?

什麼使您無法使用Fiddler來監控服務呼叫?它會告訴確切的HTTP響應主體大小。

seems to be a solution通過歸屬爲hexBinary屬性,所以它不會被Base64編碼。

+0

+1爲提琴手。 –

+1

*什麼使您無法使用Fiddler監視服務呼叫?*不知道有這樣的事情,並且這樣的事情在這裏直接適用。 –

+0

@JJ_Jason,那麼你今天學到了一些東西。 :-) – CodeCaster