2010-04-12 29 views
1

我想知道如果有辦法,我們可以上傳/下載一個blob;添加刪除視圖元數據,而不使用卷軸?如果我的應用程序有很多gui,那麼有多個webroles?無處不在,我看到webrole的文件default.aspx.cs與基於事件的blob有關;這非常好,但如果我的gui更復雜呢?訪問blob;不使用卷軸?

回答

3

Blob可以通過REST調用訪問,所以如果你願意,你甚至可以用本地桌面應用程序來操作blob,甚至用PHP或Java編寫。

至於webroles:每個角色只是在某個服務器上運行的虛擬機。 Web角色就像工作者角色一樣,增加了IIS。如果你有一個網站,你可以把整個網站放在一個網頁上。如果您需要擴展以處理更多用戶,則可以創建該Webrole的多個「實例」 - 然後將所有網站的請求發送到各個實例,每個實例運行相同的代碼。 (是的,您可以爲給定的應用程序提供多個webroles--根據您的站點的複雜性,或者如果管理員與訪問者有完全不同的UI,這可能是實用的)。

1

您不需要使用Web角色來訪問Azure存儲(Blob或其他)。您可以使用輔助角色,也可以從運行在桌面上的Windows Forms應用程序或未在Azure上運行的Web /服務應用程序訪問它。

有關如何訪問Azure存儲的信息,請參閱Azure SDK的StorageClient文檔 - 這非常簡單。

0

您不需要Azure項目或其他角色來使用blob。如果您想在.Net項目中使用Azure客戶端,則可以將您的配置添加到應用設置部分並引用它。 Azure客戶端是休息呼叫的包裝。他們有一些請求籤名步驟,使得通過簡單的網絡請求難以實現呼叫。

<add key="AzureBlobStorage" value="AccountName=youraccountname;AccountKey=YOURKEYeZgfgdfg==;DefaultEndpointsProtocol=https"/> 

你可以得到BLOB客戶端:

public CloudBlobClient GetBlobClient() 
    { 
     var accountBlob = ConfigurationManager.AppSettings["AzureBlobStorage"]; 

     var account = CloudStorageAccount.Parse(accountBlob.ToString()); 


     return account.CreateCloudBlobClient(); 

    } 


public CloudBlob GetBlob(BlobItem blobItem) 
     { 
      var client = GetBlobClient(); 
      var cloudBlobContainer = client.GetContainerReference(blobItem.ContainerReference); 
      return cloudBlobContainer.GetBlobReference(blobItem.FileName); 
     } 

BlobItem只是一個包裝。基本上,您需要文件夾名稱和文件名才能訪問blob。

public class BlobItem 
{ 
    [Required] 
    [Display(Name = "Container")] 
    public string ContainerReference { get; set; } 
    [Required] 
    [Display(Name = "File name")] 
    public string FileName { get; set; } 

    [Required] 
    [UIHint("MultilineText")] 
    public string Content { get; set; } 

    /// <summary> 
    /// to use in stream mode 
    /// </summary> 
    public Stream Stream { get; set; } 
}