`
bk_lin
  • 浏览: 336672 次
社区版块
存档分类
最新评论

Windows Azure入门教学系列 (六):使用Table Storage

 
阅读更多

公告 :本博客为微软云计算中文博客 的镜像博客。 部分文章因为博客兼容性问题 ,会影响阅读体验 。如遇此情况,请访问 原博客


本文是 Windows Azure 入门教学 的第六篇文章。

本文将会介绍如何使用 Table Storage Table Storage提供给我们一个云端的表格结构。我们可以把他想象为 XML文件或者是一个轻量级的数据库(当然,不是通过 SQL 语句进行数据的操作)。

使用 Table Storage的方法依然是调用 REST API。有关 TableStorageRESTAPI的详细信息,请参见 Table服务 API

为了方便 .NET开发人员,我们在 SDK中提供了 Microsoft.WindowsAzure.StorageClient类来帮助发送 REST请求。

在开始本教学之前,请确保你从 Windows Azure 平台下载 下载并安装了最新的 Windows Azure开发工具。 本教学使用 Visual Studio 2010作为开发工具。

步骤一:创建解决方案和项目

由于我们要在本地模拟环境下测试 TableStorage,首先,请确保 Storage Emulator已经启动。我们可以找到管理器的进程手动启动或者让 Visual Studio 2010帮助我们启动他。

右击工具栏中 Windows Azure模拟器的图标,选择” Show Storage Emulator UI”。弹出如下图所示的窗口:

我们要关注的是 Service management Table所在的一行。要确保 Status Running

确认完毕后启动 Visual Studio 2010,并且新建一个 Console项目。

步骤二:添加程序集引用

请在项目属性页里确认项目的 Target framework的值是 .NET Framework 4 .NET Framework 3.5。然后添加对 C:/Program Files/Windows Azure SDK/v1.3/ref/Microsoft.WindowsAzure.StorageClient.dll的引用。该路径为 SDK默认安装路径,如果你不能在这个路径中找到 Microsoft.WindowsAzure.StorageClient.dll请从 SDK安装路径中寻找。

接下来添加对 System.Data.Services.Client程序集的引用。该程序集安装在 GAC中。你能够在 Add Reference窗口的 .NET标签下找到他。

步骤三:添加代码

首先在项目中的 Program.cs中引用命名空间:

using Microsoft.WindowsAzure;

using Microsoft.WindowsAzure.StorageClient;

然后在 Program.cs中添加如下代码 :

class Program

{

static void Main(string [] args)

{

var storageAccount = CloudStorageAccount .DevelopmentStorageAccount;

var tableStorage = storageAccount.CreateCloudTableClient();

// 检查名为 CustomerInfo 的表格是否被创建,如果没有,创建它

tableStorage.CreateTableIfNotExist("CustomerInfo" );

// 创建表格服务上下文

var context = new CustomerInfoContext (storageAccount.TableEndpoint.AbsoluteUri, storageAccount.Credentials);

// 插入两条客户信息数据 , 客户 ID 分别设置为 0 1

CustomerInfo ci1 = new CustomerInfo () { CustomerAge = 25, CustomerID = "0" , CustomerName = "Mike" };

context.AddObject("CustomerInfo" , ci1);

CustomerInfo ci2 = new CustomerInfo () { CustomerAge = 32, CustomerID = "1" , CustomerName = "Peter" };

context.AddObject("CustomerInfo" , ci2);

context.SaveChanges();

// 查找 CustomerID 1 的客户数据并显示

Console .WriteLine("Retrieve information of a customer whose ID is 1" );

var query = context.CreateQuery<CustomerInfo >("CustomerInfo" ).Where(c => c.CustomerID == "1" ).ToList();

var returnedcustomerinfo = query.FirstOrDefault();

Console .WriteLine(string .Format("Customer info retrieved: ID:{0},Name:{1},Age:{2}" ,

returnedcustomerinfo.CustomerID, returnedcustomerinfo.CustomerName, returnedcustomerinfo.CustomerAge));

// 更新 CustomerID 1 的客户数据中的年龄

returnedcustomerinfo.CustomerAge = 33;

context.UpdateObject(returnedcustomerinfo);

Console .WriteLine("**Customer Info updated**" );

// 重新查询 , 测试更新效果

Console .WriteLine("Retrieve information of a customer whose ID is 1" );

var query2 = context.CreateQuery<CustomerInfo >("CustomerInfo" ).Where(c => c.CustomerID == "1" ).ToList();

var returnedcustomerinfo2 = query.FirstOrDefault();

Console .WriteLine(string .Format("Customer info retrieved: ID:{0},Name:{1},Age:{2}" ,

returnedcustomerinfo2.CustomerID, returnedcustomerinfo2.CustomerName, returnedcustomerinfo2.CustomerAge));

// 删除插入的两条客户数据

context.DeleteObject(ci1);

context.DeleteObject(ci2);

context.SaveChanges();

Console .WriteLine("The records has been deleted" );

Console .ReadLine();

}

}

public class CustomerInfo : TableServiceEntity

{

public string CustomerID

{

get { return this .RowKey; }

set { this .RowKey = value ; }

}

public string CustomerName { get ; set ; }

public int CustomerAge { get ; set ; }

public CustomerInfo()

{

this .PartitionKey = "mypartitionkey" ;

}

}

public class CustomerInfoContext : TableServiceContext

{

public CustomerInfoContext(string baseAddress, StorageCredentials credentials) :

base (baseAddress, credentials)

{

}

}

步骤四:观察并分析代码

步骤三中的代码中,首先我们通过 CloudStorageAccount.DevelopmentStorageAccount来说明我们使用的本地的 Development Storage自带账户而不是真正的云端存储服务账户。 (如果要用真实账户可以使用

//DefaultEndpointsProtocol=https 可以改成 DefaultEndpointsProtocol=http 表示用 HTTP 而不是 HTTPS

CloudStorageAccount .Parse("DefaultEndpointsProtocol=https;AccountName=[ 用户名 ];AccountKey=[ 密码 ]" );

来实例化对象 )然后通过该账户类来实例化一个 Table客户端类。这两步是使用 SDK StorageClient程序集来调用 Table Storage服务的必要步骤。

然后我们需要关注 System.Data.Services.Client程序集。该程序集是 WCF Data Services的客户端程序集,能够帮助我们很方便地创建 OData客户端程序。 (Table Storage提供的 REST API遵循 OData规范,因此我们的客户端需要遵循 OData规范向 Table Storage服务发送消息 )

我们需要创建上下文来调用服务,我们可以直接使用 TableServiceContext。但是通常我们会通过写一个继承自 TableServiceContext的类来实现,这样我们可以在该类中添加一些属性或者方法来更加方便地调用。上面的代码中我们继承了 TableServiceContext但是并没有添加额外的代码。在实际应用中我们可以加上一些代码来更加方便地调用。比如我们可以在 CustomerInfoContext 类中加入下面的属性:

public IQueryable <CustomerInfo > CustomerInfo

{

get

{

return CreateQuery<CustomerInfo >("CustomerInfo" );

}

}

这样我们就可以通过调用 context.CustomerInfo来更加代替 context.CreateQuery<CustomerInfo>("CustomerInfo")

继承自 TableServiceEntity类的 CustomerInfo 类定义了每条数据的模式。需要注意的是,与一般的关系型数据库不同, Table Storage并不要求一个表中的所有数据都遵循同一模式。举例来说,在一个表中,可以存储一条有三个字段的记录和一条只有两个字段的记录。这也是我们为什么说可以把 Table Storage想象为 XML文件的原因。当然在通常情况下我们都会需要在一个表中存储同一模式的数据。这时候我们就可以使用 System.Data.Services.Client程序集来为 Table Storage创建客户端程序。当我们需要在一个表中存储不同模式的数据时我们可以手动构建和发送 REST请求。

还有需要注意的地方是 PartitionKey RowKey。这两项共同组合成表的主键。详细信息,请参见 理解 Table服务数据模型

代码逻辑包括了对 Table Storage的插入,更新,删除和读取。请参考注释部分。

步骤五:运行程序

如果一切正常,你将会看到 Console程序输出如下信息:

分享到:
评论

相关推荐

    《Windows Azure入门指南》

    总的来说,《Windows Azure入门指南》将引导你进入Azure的世界,理解其核心概念、开发流程和最佳实践,助你在云计算领域迈出坚实的第一步。无论你是开发者、系统管理员还是IT决策者,都能从中受益,为你的项目和业务...

    Windows Azure从入门到精通含源代码

    “Windows Azure从入门到精通含源代码”这本书很可能包含了实际示例,帮助读者通过实践理解Azure的用法。书中的源代码可能涵盖了如何使用Azure SDK进行开发,以及如何部署和管理应用程序。通过阅读和运行这些代码,...

    Windows.Azure从入门到精通

    《Windows Azure从入门到精通》是一本全面介绍微软云服务平台Windows Azure的指南,旨在帮助初学者快速理解和掌握Azure的核心概念和技术。通过本书,读者可以深入理解云计算的基础,以及如何利用Azure构建、部署和...

    12天的azure学习清单

    #### DAY-1:云计算基础与Azure入门 **云计算定义** 云计算是一种通过互联网提供托管服务的技术,包括数据存储、服务器、数据库、网络连接以及软件等资源。这些资源都存储在由云服务提供商维护的物理服务器上,并...

    MMDB.AzureSample:Windows Azure 入门示例演示应用程序

    示例可能涵盖如Azure App Service(用于Web应用)、Azure Functions(无服务器计算)、Azure Storage(包括Blob、Queue和Table存储)、Azure Cosmos DB(全球分布式多模型数据库服务)等Azure服务的使用。...

    Azure-AZ-900.rar

    - 存储服务:包括Blob存储(对象存储),Queue和Table Storage(NoSQL数据存储)以及File Storage(共享文件系统)。 - 数据库服务:Azure SQL Database(托管SQL服务)、Cosmos DB(全球分布式多模型数据库)等。...

    EastFive.Azure.Storage.Backup:一种服务,用于定期计划从一个Azure存储帐户到另一个Azure存储帐户的数据副本(表和Blob)

    EastFive.Azure.Storage.Backup 一种服务,用于定期计划从一个Azure存储帐户到另一个Azure存储帐户的数据副本(表和Blob)。 表数据已下载到服务并重新上传。 不下载Blob数据,而是由Azure在存储帐户之间复制Blob...

    PyPI 官网下载 | azurestoragewrap-0.2.6.tar.gz

    8. **依赖管理**:作为Python库,`azurestoragewrap`将依赖于Microsoft Azure的官方SDK,如`azure-storage-blob`、`azure-storage-table`和`azure-storage-queue`,这些依赖项通常在`setup.py`或`requirements.txt`...

    StorageExplorer:Microsoft Azure表存储资源管理器

    顾名思义,Azure Table Storage Explorer是基于Web的Azure表存储资源管理器。 ##入门该应用程序分为两个部分:服务器和客户端。 要启动该应用程序,请运行服务器: cd /server npm install npm install -g grunt-...

    azure-examples:Azure Java示例

    登录到Azure az login设置默认订阅获取您的订阅列表 az account list --output table 使用上一个输出中的订阅ID设置此会话的默认订阅 az account set --subscription " subscription-id "Azure应用服务示例Azure容器...

    Hello_World_Azure_Demo:这是用于Azure测试

    8. **Azure Storage**:如果项目涉及数据存储,可能还会用到Azure Blob存储(文件存储)、Table Storage(NoSQL数据存储)或Queue Storage(消息队列)等服务。 9. **身份验证与授权**:Azure Active Directory ...

    .NET从入门到精通

    学习如何在Azure上部署.NET应用程序,使用Azure服务如Blob Storage、Table Storage、Cosmos DB等进行数据存储,以及利用Azure Functions、Service Bus等实现无服务器计算和消息传递,都是现代.NET开发者需要掌握的...

    DP-900认证156Q.pdf

    2. **Azure 服务**:熟悉Azure的主要服务,如Azure Storage(存储账户、Blob、Queue、Table等)、Azure Compute(虚拟机、函数、容器实例等)和Azure SQL Database。 3. **数据管理与分析**:理解Azure Data Lake ...

    Mobile3:来自Mobile3事件的资源,用于机器人和认知服务入门

    7. **Azure Storage**:Azure Storage提供了多种云存储解决方案,如Blob、Table和Queue存储。Mobile3的资源可能包括如何在Xamarin应用中使用Azure Storage来存储和检索数据的实例。 8. **Cosmos DB**:Azure Cosmos...

    Airflow Documentation

    - **Azure Blob Storage**:若要将日志记录到 Azure Blob Storage,同样需要配置相应的插件。 - **Google Cloud Storage**:要将日志记录到 Google Cloud Storage,也需要配置相应的插件。 - **安全性**:...

    CS1660-HW3

    6. **数据存储和管理**:Azure Storage服务的使用,包括Blob、Table和Queue存储。 通过完成这样的作业,学生可以增强其在云计算环境中的实际操作能力,理解大数据处理流程,并熟悉Azure平台的相关服务。

    az204-microsoft-learn-notes:在此仓库中,我尝试做笔记,以帮助MS为准备AZ204认证而学习的讲座和道路

    3. **存储服务**:涵盖Blob、Table、Queue和File Storage,以及数据备份和恢复策略。 4. **网络服务**:VNet、负载均衡器、应用网关、DNS和CDN的使用。 5. **身份与访问管理**:Azure Active Directory(Azure AD)的...

    intermediator-bot-sample:使用Microsoft Bot Framework(v4)构建的示例bot,它在不同通道上的两个用户之间路由消息

    入门 由于这是高级bot方案,因此先决条件包括您熟悉Microsoft Bot Framework的基本概念,并且知道C#编程语言。 在开始之前,建议您安装以下工具: () 尽管该漫游器实际上可以在任何地方托管,但部署说明(如下)...

Global site tag (gtag.js) - Google Analytics