Worker Role:批量处理任务
WorkerRole程序通常为了配合WebRole程序,用于批量处理任务,扮演后台进程的角色。比如WorkerRole用于视频处理等等。要本地运行WorkerRole,需要Windows Azure模拟器的支持,因此也需要安装Windows Azure SDK。
从代码结构的角度,每个Worker Role都包含一个WorkerRole类,作为程序的入口点。WorkerRole类必须继承自RoleEntryPoint,并且必须被命名为WorkerRole。
{
// WorkerRole.Run方法会在一个Worker Role初始化完毕,开始运行时被调用。一旦Run方法被跳出,
//一个Worker Role就会被终止
public override void Run()
{
// 此处仅作为示例程序,请替换您的代码逻辑。
Trace.WriteLine("SimpleWorkerRole entry point called", "Information");
}
//WorkerRole.OnStart方法可以被类比成Console程序中的Main方法,它会在一个Role启动时被调用
//通常被于做一些初始化工作。
public override bool OnStart()
{
return base.OnStart();
}
}
当然,你可以重写OnStop方法来做一些善后工作,这个方法并没有被自动生成。
VM Role:Windows Server 2008 R2镜像
VMRole,从字面意思讲,扮演的是虚拟机的角色,指的是Windows Server 2008 R2镜像,通常用于将Windows Server应用程序迁移到Windows Azure平台。
2. Windows Azure Storage
Windows Azure的存储模块“Windows Azure Storage”支持三种数据模型,如图所示,分别为Blob,Table,Queue。通过标准的HTTP URI提供数据访问。
Blob
众所周知,Blob用于存储二进制文件,Blob Storage可以看做是云端的文件系统。Windows Azure提供的Blob服务结构图如下。Account指的是云端存储服务账户。Container是Blob的集合,任何一个Blob文件必须对应一个Container,如果没有则需要创建。Blob又分为按照顺序与随机存储又分为Page与Block两种类型。
为便于理解,我们演示如何创建一个Blob对象。代码逻辑如下:
1. 取得存储服务账户
2. 确保container创建,如果没有,创建container
2. 新建一个blob,内容为"Hello World"
3. 读取并显示blob内容
4. 删除blob
与桌面操作系统上不同,我们是通过REST API来进行对文件的操作。有关REST API的详细信息,请参见Blob 服务 API。Main方法中加入如下代码 (请确保已安装Windows Azure SDK):
{
// 我们使用的本地的Development Storage自带账户而不是真正的云端存储服务账户
var storageAccount = CloudStorageAccount.DevelopmentStorageAccount;
var blobclient = storageAccount.CreateCloudBlobClient();
// 检查container是否被创建,如果没有,创建container
var container = blobclient.GetContainerReference("mycontainer");
container.CreateIfNotExist();
// 新建一个blob,内容为"Hello double life"
var blob = container.GetBlobReference("myfile");
blob.UploadText("Hello double life!");
// 读取并显示blob内容
var blobcontent = blob.DownloadText();
Console.WriteLine(blobcontent);
// 删除blob
var succeed = blob.DeleteIfExists();
Console.WriteLine(succeed ? "Delete Succeed" : "Delete Failed");
Console.ReadLine();
}