Windows Azure入门教学系列 (三):创建第一个Worker Role程序
在开始本教学之前,请确保你从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类:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
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方法,它会在一个Role启动时被调用,通常被用于做一些初始化工作。默认生成的代码为你初始化了诊断(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模拟器中是不一样的。有关详细信息,我们会在今后的文章中说明。
Windows Azure入门教学系列 (三):创建第一个Worker Role程序的更多相关文章
- Windows Azure入门教学系列 (一): 创建第一个WebRole程序
原文 Windows Azure入门教学系列 (一): 创建第一个WebRole程序 在第一篇教学中,我们将学习如何在Visual Studio 2008 SP1中创建一个WebRole程序(C#语言 ...
- Windows Azure中文博客 Windows Azure入门教学系列 (一): 创建第一个WebRole程序
http://blogs.msdn.com/b/azchina/ 本文转自:http://blogs.msdn.com/b/azchina/archive/2010/02/09/windows-azu ...
- Windows Azure入门教学系列 (七):使用REST API访问Storage Service
本文是Windows Azure入门教学的第七篇文章. 本文将会介绍如何使用REST API来直接访问Storage Service. 在前三篇教学中,我们已经学习了使用Windows Azure S ...
- Windows Azure入门教学系列 (二):部署第一个Web Role程序
本文是Windows Azure入门教学的第二篇文章. 在第一篇教学中,我们已经创建了第一个Web Role程序.在这篇教学中,我们将学习如何把该Web Role程序部署到云端. 注意:您需要购买Wi ...
- Windows Azure入门教学系列 (九):Windows Azure 诊断功能
本文是Windows Azure入门教学的第九篇文章. 本文将会介绍如何使用Windows Azure 诊断功能.跟部署在本地服务器上的程序不同,当我们的程序发布到云端之后,我们不能使用通常的调试方法 ...
- Windows Azure入门教学系列 (六):使用Table Storage
本文是Windows Azure入门教学的第六篇文章. 本文将会介绍如何使用Table Storage.Table Storage提供给我们一个云端的表格结构.我们可以把他想象为XML文件或者是一个轻 ...
- Windows Azure入门教学系列 (五):使用Queue Storage
本文是Windows Azure入门教学的第五篇文章. 本文将会介绍如何使用Queue Storage.Queue Storage提供给我们一个云端的队列.我们可以用Queue Storage来进行进 ...
- [转]Windows Azure入门教学系列 (六):使用Table Storage
本文转自:http://blogs.msdn.com/b/azchina/archive/2010/03/11/windows-azure-table-storage.aspx 本文是Windows ...
- Windows Azure入门教学系列 (四):使用Blob Storage
本文将会介绍如何使用Blob Storage.Blob Storage可以看做是云端的文件系统.与桌面操作系统上不同,我们是通过REST API来进行对文件的操作.有关REST API的详细信息,请参 ...
随机推荐
- cocos2d-x3.6 连连看连通画线
我的博客:http://blog.csdn.net/dawn_moon 网上看到非常多人写的连连看,都没有画连线的实现.事实上要话连线挺简单的.cocos2d-x 提供了一个非常方便的绘图形的类.Dr ...
- 如何用 Swift 语言构建一个自定控件
(via:破船之家,原文:How To Make a Custom Control in Swift) 用户界面控件是所有应用程序重要的组成部分之一.它们以图形组件的方式呈现给用户,用户可以通过它 ...
- lib32gcc1 : Depends: gcc-4.9-base (= 4.9-20140406-0ubuntu1) but 4.9.3-0ubuntu4
运行:sudo apt-get update 然后重新安装lib32gcc1
- Hbase 配置问题(ERROR: org.apache.hadoop.hbase.PleaseHoldException: org.apache.hadoop.hbase.PleaseHoldEx)
ERROR: org.apache.hadoop.hbase.PleaseHoldException: org.apache.hadoop.hbase.PleaseHoldException: Mas ...
- 在VC6.0中能不能使用Duilib界面库呢?
Duilib库的源代码是在vs2010下编译的,一般适用于vs2008及以上的版本开发使用,那么duilib能不能在vc6.0的工程中使用呢?如何在vc6.0中使用duilib库呢? 今天,由于工作要 ...
- HttpComponents 也就是以前的httpclient项目
HttpComponents 也就是以前的httpclient项目,可以用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端/服务器编程工具包,并且它支持 HTTP 协议最新的版本和建议.不 ...
- 制作Linux(Fedora、Ubuntu、CentOS)优盘启动
随着嵌入式技术的快速发展,Linux快速发展过一段时间.虽然现在不是很热,但是linux在现实社会的使用还是很有用处.而光盘有有些落伍,不仅浪费而且不环保,所以质优价廉的优盘就脱颖而出.所以,用优盘制 ...
- App状态管理-AppDelegate
前面提到AppDelegate的实例在UIApplicationMain函数中被创建并调用. AppDelegate的主要作用,可以从其继承类可以看出 class AppDelegate:UIResp ...
- android JB2连拍降速原理介绍
1.HAL层 (1)alps\mediatek\platform\mt6589\hardware\camera\core\camshot\MultiShot\MultiShot.cpp sleep实现 ...
- typeof 使用介绍
JS中的变量是松散类型(即弱类型)的,可以用来保存任何类型的数据. typeof 可以用来检测给定变量的数据类型,可能的返回值:1. 'undefined' --- 这个值未定义: 2. 'boole ...