簡體   English   中英

通過HTTPS增量處理大型XML文件?

[英]Incrementally process large XML file over HTTPS?

我必須從安全的Web服務器下載,處理和存儲8GB的XML文件。 我可以使用WebRequest類下載該文件,但這將花費很長時間。 此外,我知道該文件的結構使其適合離散塊中的處理。

我如何'流式傳輸'這個文件,這樣我只能獲得一些可以處理的小塊,而不必一次得到整個流?

編輯

我忘了提 - 我們托管在Azure上。 想到的一個想法是提供一個工作者角色,它只下載大文件並且可以根據需要進行。 這有多可行?

8 GB是一個很大的工作量。 為了保護自己免於返工和有效擴展,我會將XML文件下載與其處理分離。

在作為流下載時,我會將某種流標識符寫入持久存儲,並通過將包含其相關數據的消息放入隊列來安排完成每個原子工作單元。 這將允許由於任何原因從下載向南恢復,或者單元工作不成功和/或干擾下載。

我正在使用HttpWebRequest,BeginGetResponse然后使用GetResponseStream

然后,當它通過stream.BeginRead向下滴時,可以讀取塊中的流

這是一個非常復雜的例子: http//stuff.seans.com/2009/01/05/using-httpwebrequest-for-asynchronous-downloads/

如果需要按順序處理文件,只需在響應流上打開XMLReader並根據需要讀取數據。

如果您需要隨機訪問該文件(即在中間讀取),您可能需要做更多工作來創建可搜索流(如果服務器在請求中支持RANGE選項)或者只是像現在一樣下載整個文件。

請注意,8GB是大量數據,完全下載將花費大量時間,無論讀取方法如何。

您可以將xml文件上傳到塊blob並從那里下載。這篇博客文章可能有所幫助http://blogs.msdn.com/b/kwill/archive/2011/05/30/asynchronous-parallel-block-blob -transfers,與正在進行的變化,notification.aspx

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM