本文是 Windows Azure入门教学的第三篇文章。
本文将会引导大家创建一个简单的 Worker Role 程序,并且部署在 Windows Azure模拟器 里。
在开始本教学之前,请确保你从Windows Azure 平台下载下载并安装了最新的 Windows Azure开发工具。 本教学使用 Visual Studio 2010作为开发工具。
以管理员权限启动 Visual Studio 2010 ,并且新建一个 Windows Azure Project 项目。
在弹出窗口出现后,按照下图所示,分别点击 Worker Role , “ >” 按钮。该步骤会在右边窗口中生成一个新的 Worker Role 项。当你把鼠标移动至该 Worker Role 项之上时,会出现两个图标。 点击左边的铅笔图标,你就可以修改 Worker Role的名字;点击右边的叉形图标则可以移除该 Role。决定了 Role的种类,数量,以及名字之后,点击 OK以创建解决方案。
项目结构如下图所示:
其中自动被设置成启动项目的是一个 Cloud Service项目,你可以通过蓝色圆球图标来识别一个 Cloud Service项目。单纯的一个 Cloud Service项目只是一个 Role的载体,针对每个 Role, Visual Studio也会为你创建一个对应的项目,例如,为 Worker Role生成的就是一个 Class Library项目。无论何时,请确保 Cloud Service项目是启动项目。
打开 WorkerRole.cs文件,并且观察 WorkerRole类:
public class WorkerRole : RoleEntryPoint { public override void Run() { // This is a sample worker implementation. Replace with your logic. Trace .WriteLine("SimpleWorkerRole entry point called" , "Information" ); while (true ) { Thread .Sleep(10000); Trace .WriteLine("Working" , "Information" ); } } public override bool OnStart() { // Set the maximum number of concurrent connections ServicePointManager .DefaultConnectionLimit = 12; // For information on handling configuration changes // see the MSDN topic at http://go.microsoft.com/fwlink/?LinkId=166357 . return base .OnStart(); } }每个 Worker Role 都包含一个 WorkerRole 类,作为程序的入口点,类似于 Console 项目中的 Program 类。这个类必须继承自 RoleEntryPoint ,并且必须被命名为 WorkerRole。
WorkerRole.OnStart 方法可以被类比成 Console 程序中的 Main 方法,它会在一个R ole 启动时被调用,通常被用于做一些初始化工作。默认生成的代码为你初始化了诊断( Diagnostics )以及配置相关的代码。
WorkerRole.Run 方法会在一个 Worker Role 初始化完毕,开始运行时被调用。 一旦 Run方法被跳出,一个 Worker Role就会被终止(你可以重写 OnStop方法来做一些善后工作,这个方法并没有被自动生成)。
通常 Worker Role被用于批量处理任务,所以自动生成的代码的控制逻辑中包含了一个无限循环,每个循环用于处理单个任务,在处理之前当前线程会睡上 10秒。请注意你并不一定要跟着自动生成的控制逻辑走,你完全可以修改生成的代码,来撰写你自己的控制逻辑。例如,你也许会创建一个定时器,每隔一定时间来执行一个任务。
本文假设你并未修改自动生成的代码,自动生成的代码执行的任务就是每隔 10秒纪录一条 Trace信息。
现在我们已经可以在 Windows Azure模拟器中运行这个 Worker Role程序了。在第一篇教学中,我们已经让大家认识了 Windows Azure模拟器,在今后的文章中还会有更详细的说明,这里省略相关内容。
按下 F5 开始调试程序,在任务栏中找到 Windows Azure模拟器 的图标,右键点击该图标,点击Show Compute Emulator UI打开UI界面。
项目启动后,每隔 10 秒,你都会看到一句 Information: Working 的消息,这就说明我们的 Worker Role 中在顺利运行中:
请注意发布之后观察 Trace信息的方式和在 Windows Azure模拟器中是不一样的。有关详细信息,我们会在今后的文章中说明。