0

我有一個列表,每個消息都有一個圖片和列表現在我需要更新圖片和附件的BLOB網址爲每一封郵件將圖像上傳到Azure blob什麼是更好的選擇?

解決方案1: 通話UploadBlob用於圖像和和通話UploadBlob每個附件,然後在DB與斑點網址更新報文對象

解決方案2 上傳的圖片和一氣呵成的所有附件,使用並行上傳和更新斑點URL和保存信息的數據庫,每一封郵件有唯一的ID,所以當上傳到blob我可以設置這個ID來創建一個blob url唯一的,所以更新的消息,我需要郵件ID映射與斑點網址包含消息ID

,如果您有任何其他的解決辦法,以提高代碼的可讀性和性能請諮詢

回答

1

不知道我是否完全理解這個問題,但是......似乎每條消息都會有一個圖像和零個或多個附件,並且消息對象需要引用圖像和相關附件。

如果這是一個正確的解釋:每個上傳將在自己的blob。即使使用上面的解決方案#2,在所有上傳之後,您仍然會得到多個blob URI。

我無法分辨這適合您的應用程序,無論是上傳桌面應用程序,還是從最終用戶獲取圖像和附件的Web應用程序,然後將它們上傳到blob(以及數據庫記錄正在寫入)。如果是後者:我建議如下:

  1. 寫消息記錄(這將可能給你一些類型的唯一ID後面)
  2. 當接收每個圖像或附件,上傳到Blob存儲和然後使用結果URI更新消息

您可以啓動並行任務來上傳每個圖像或附件,然後更新消息記錄。只要你有帶寬,平行上傳就會更多地使用它,直到一點。每個存儲帳戶都有一個吞吐量上限(每秒5,000個事務和3Gbps)。

當然還有其他的方法,例如引入消息更新隊列,使用CQRS模式等。部分決定將基於應用程序的體系結構(正如我所說的,我不知道這是否是做上傳的桌面應用程序,blob存儲或者上傳的網絡服務器)。

+0

嗨david它的Web應用程序發送請求到WCF服務和WCF調用業務,我已經實現了上傳到BLOB的方法,我無法控制消息,因爲我從XML獲取它,它可以包含1000消息和每條消息可以包含多個附件,生成xml的應用程序可以確保附件的大小以Kb爲單位 –

0

根據我的理解,看起來像解決方案2更好。

我們可以在任務並行庫的幫助下並行上傳多個文件:http://msdn.microsoft.com/en-us/library/dd460717.aspx。我們也可以使用異步模式(稱爲Begin/End方法)。但是如果我們不能同時上傳太多文件會更好。如果發生太多待處理的Web請求,其中一些可能會失敗。例如,我們可以選擇創建10個任務,等待1完成,然後創建第11個任務。

最好的問候,

Ming Xu。