WindowsAzure存储与角色开发详解
立即解锁
发布时间: 2025-08-17 00:54:30 阅读量: 1 订阅数: 3 

### Windows Azure 存储与角色开发详解
#### 1. 表服务与队列服务概述
在云存储中,表服务可用于存储和检索实体。不过,由于表中的实体可能是异构的,使用工具查看现有表时,生成的网格可能会让人困惑,且该工具不能从头创建表或实体。
队列服务是云存储账户提供的另一种重要服务。与存储文件的 Blob 服务、管理应用程序实体的表服务不同,队列用于存储消息,这些消息通常代表待完成的操作。一个应用程序可以将消息存储在队列中,之后再检索这些消息进行处理,也可以由另一个负责该流程的应用程序从队列中取出消息。
在传统的本地解决方案中,我们可能会使用 Microsoft Message Queuing (MSMQ) 或 SQL Server Message Broker 来处理消息队列。而在云环境中,Windows Azure 存储账户提供了智能的队列服务,可实现应用程序前端与后端的解耦。例如,将 Azure 的前端 Web 角色与后端 Worker 角色解耦。Worker 角色默认不对外暴露,专门用于在后端执行某些操作,如处理前端发送的订单消息。这种解耦方式自 20 世纪 90 年代以来在企业解决方案中就很常见,它能处理比单个前端服务器更多的请求和订单。在 Windows Azure 实例中,还可以独立调整前端和后端的实例数量,以满足不同的业务需求。
#### 2. 创建消息并放入队列
以下是创建消息并将其放入队列的详细步骤:
1. **创建新的 ASP.NET 页面**:创建一个名为 `StorageAccountQueue` 的新 ASP.NET 页面。
2. **添加文本框控件**:在页面中添加一个 `TextBox` 控件,命名为 `orderTextBox`,用于用户输入消息。
3. **添加按钮控件**:在 `TextBox` 控件下方插入一个 `Button` 控件,命名为 `addButton`。
4. **绑定按钮点击事件**:将 `Button` 控件的 `OnClick` 属性设置为 `addButton_Click`,以绑定点击事件处理程序。以下是完整的 ASP.NET 页面代码:
```html
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="StorageAccountQueue.aspx.cs"
Inherits="WebRole1.StorageAccountQueue" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR
/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>
<asp:TextBox ID="orderTextBox" runat="server" />
</p>
<p>
<asp:Button Text="Add" ID="addButton" runat="server"
onclick="addButton_Click" />
</p>
</div>
</form>
</body>
</html>
```
5. **创建按钮点击事件处理程序**:在代码隐藏文件中创建 `addButton_Click` 事件处理程序,并复制以下代码:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;
namespace WebRole1
{
public partial class StorageAccountQueue : System.Web.UI.Page
{
protected void addButton_Click(object sender, EventArgs e)
{
var account =
CloudStorageAccount.FromConfigurationSetting("DataConnectionString");
CloudQueueClient queueClient = account.CreateCloudQueueClient();
CloudQueue queue = queueClient.GetQueueReference("orders");
CloudQueueMessage m = new CloudQueueMessage(orderTextBox.Text);
queue.AddMessage(m);
}
}
}
```
此代码与 Blob 服务的代码类似,需要先获取服务代理才能开始使用存储账户。`CloudStorageAccoun
0
0
复制全文
相关推荐










