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