访问blob;没有使用webrole?

时间:2010-04-12 00:06:01

标签: azure azure-storage azure-storage-blobs

我想知道我们是否可以上传/下载blob;不使用webrole添加删除视图元数据?如果我的应用程序有很多gui,那么有多个webroles?无处不在我看到webrole的文件default.aspx.cs与基于事件的blob有关;这很好,但如果我的gui更复杂怎么办?

3 个答案:

答案 0 :(得分:3)

可以通过REST调用访问Blob,因此如果您愿意,您可以使用本地桌面应用程序实际操作blob,甚至可以用PHP或Java编写。

至于webroles:每个角色只是在某个服务器上运行的虚拟机。 Web角色就像工作者角色一样,增加了IIS。如果您有一个网站,您可以将整个网站放在一个webrole中。如果您需要扩展它以处理更多用户,您可以创建该webrole的多个“实例” - 然后将您的所有网站请求发送到各个实例,每个实例运行相同的代码。 (是的,您可以为给定的应用程序提供多个webroles - 这可能是实用的,具体取决于您网站的复杂程度,或者如果您的管理员与访问者的UI完全不同)。

答案 1 :(得分:1)

您无需使用Web角色即可访问Azure存储(Blob或其他)。您可以使用辅助角色,或者甚至可以从桌面上运行的Windows窗体应用程序或未在Azure上运行的Web /服务应用程序访问它。

有关如何访问Azure存储的信息,请参阅Azure SDK的StorageClient文档 - 这非常简单。

答案 2 :(得分:0)

您不需要Azure项目或其他角色来使用blob。如果要在.Net项目中使用Azure客户端,可以将配置添加到应用程序设置部分并引用它。 Azure客户端是休息呼叫的包装器。他们有一些请求签名步骤,这使得调用很难通过简单的webrequests实现。

 <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; }
}