2016-08-03 33 views
0

我們目前在IIS服務器上託管MVC webapp。我們有最終用戶上傳圖片/ pdf文件的選項。要存儲它們,我們可以使用代碼這樣的東西..將文件保存在Azure託管網站

if (file.ContentLength > 0) 
     { 
      var fileName = Path.GetFileName(file.FileName); 
      var path = Path.Combine(Server.MapPath("~/App_Data/Images"), fileName); 
      file.SaveAs(path); 
     } 

現在我們有計劃在Azure上承載這個。 如果我們在Azure中託管上述文件存儲機制是否會工作?或者我們需要 對文件存儲機制進行更改(因爲Azure文件系統不同)。

回答

1

如果你打算使用一個天藍色的虛擬機,並在該服務器的IIS中託管該站點,那麼該方法將是相同的。您將擁有一個持久磁盤,並且可以將文件存儲在那裏。但如果你有更多的文件正在上傳等,這不是一個可行的解決方案。

如果你打算使用azure應用程序服務的web應用程序或web角色,那麼這個選項是不可行的,因爲該實例中的存儲將受到限制,並且如果實例在webroles的情況下回收或重新啓動,並且在web應用程序的數據將會消失。

Azure存儲提供的blob存儲對於存儲二進制文件(如文檔,圖像,視頻等)非常有用。Azure存儲便宜且高度可用且可靠。

在您的asp.net MVC應用程序中,您必須添加azure存儲SDK作爲nuget參考,然後使用上述的上傳/下載方法。

如果您在VM中託管您的網站,則可以使用azure blob存儲。

https://azure.microsoft.com/en-in/documentation/articles/storage-dotnet-how-to-use-blobs/

http://www.infragistics.com/community/blogs/dhananjay_kumar/archive/2016/01/26/creating-a-photo-album-for-asp-net-mvc-5-users-using-azure-blob-storage.aspx

+0

對於Web Apps的評論是不正確的 - 存儲是持久的,除非Web應用程序被實際刪除。 –

+0

@David根據您的評論更新了答案。 – Aravind

2

你如何部署到Azure是你的,而且有很多方法可以做到這一點(我不會建議任何特定的方式)。客觀雖然:

虛擬機

  • 虛擬機操作系統磁盤耐用,存儲在頁斑點。但是,這種存儲不是在虛擬機之間共享的。
  • 虛擬機暫存磁盤(無論是普通磁盤還是SSD)都不耐用。假設數據將會丟失。
  • 您可以將耐用磁盤連接到虛擬機(每個磁盤最多1TB,每個磁盤最多兩個磁盤)。它們像操作系統磁盤一樣是blob支持的。但同樣,不是虛擬機實例

雲服務之間

  • Web和Worker角色實例使用非持久操作系統磁盤共享。
  • 您可以將磁盤連接到網絡/輔助角色(Azure Drives)。這些是耐用和blob支持。不在實例之間共享。

Web應用程序

  • Web應用程序提供(基於應用層的數量),耐貯運。該存儲與該Web應用程序的所有實例共享。但是,如果您刪除了您的網絡應用程序,則此存儲將消失。

Azure存儲

  • 你可以選擇讀取/離散斑點/寫(每個高達200GB)。這些獨立於任何VM /雲服務/ Web應用程序。這些通過REST API進行訪問(並以多種語言包裝在SDK中)。 Blob不映射到本地文件目錄(除了頁面斑點,其中做爲裝入爲VHD,如上面虛擬機中所述)。 Azure存儲每個帳戶最多可提供500TB,並且您可能擁有多個存儲帳戶。
  • Azure文件存儲是由Azure存儲(blobs)支持的SMB共享。這是耐用的存儲。您可以將其安裝到虛擬機上(與Azure磁盤不同,您可以將其同時安裝到多個虛擬機上)。 Azure文件存儲爲每個文件共享提供高達5TB的空間。
  • 對於面向性能的工作負載,您可以選擇高級存儲(SSD)。高級存儲磁盤只與特定的虛擬機類型兼容,並且具有128GB,512GB和1TB的容量。
相關問題