2010-07-24 69 views
3

如果我需要通過web服務傳輸文件,byte []數組大小是否反映了要傳輸的字節大小相同?byte []數組的大小是否等於C#中數組的實際大小?

E.G:

byte[] testarray = new byte[100000] 

意味着,如果傳送了它的大小將是約100,000字節(100KB)?

謝謝

+3

你應該能夠憑經驗來測試 - 不能那麼難。 – 2010-07-24 13:43:31

回答

3

沒有太多細節,答案是肯定的。 testarray是100000計數的字節緩衝區。那就是100000/1024 = 97.6 KiB(該死的你是KB v。KiB SI標準)

+0

100000 bytes = 100 KB或97.6 KiB just fyi – 2010-07-24 13:54:14

+0

由於HD製造商決定1000字節是千字節(出於市場營銷的原因),他們每年都會計算位數,字節數,千字節數,兆字節等..正確的方式。我瞭解IEC標準(http://en.wikipedia.org/wiki/Kibibyte),但我也認爲這是誤導性的。 – ja72 2010-07-24 14:17:46

+0

我們是否還需要將舊的Commodore 64重命名爲65,因爲它是65.5 kB而不是64 KiB。 – ja72 2010-07-24 14:26:15

1

是的,只要你不以不同的方式進行編碼。

2

這取決於你使用什麼協議訪問web服務。如果您使用基於HTTP的SOAP,將會有相當大的開銷,因爲字節數組將以base64字符串形式傳輸。這仍然意味着大小增加8/6,僅略高於130千比特幣。

您可能想使用MTOM進行調查。這將顯着降低開銷。

您可能需要考慮的另一件事是Web服務框架(如WCF)有時具有最大的消息大小。對於默認的WCF配置,該消息會過大。

0

通常不會,因爲所有的數據都必須被序列化成服務使用的綁定或協議規定的適當格式。

不同的服務技術使用不同的串行器,WCF尤其是高度可配置的。您的數組可以作爲XML片段傳輸,每個數組元素包含一個元素,JSON字符串,舊式SOAP RPC格式,base64字符串或其他。