技术开发 频道

Azure Services探索:存储之表(Table)存储

  操作如下:在Visual Studio中选中的你的项目,然后右键,点击”Create Test Storage Tables”

  如下图:

  之后会显示下面的提示框表示表已经成功创建了。

  你可以查看Visual Studio的输出窗口:

  你会发现Visual Studio使用了SDK中的命令行工具DevtableGen.exe,执行了下面的命令:

C:\Program Files\Windows Azure SDK\v1.0\bin\DevtableGen.exe" /forceCreate "/server:localhost\SQLExpress" "/database:WorkingWithTables" "obj\Debug\WorkingWithTables_WebRole\bin\StorageClient.dll;obj\Debug\WorkingWithTables_WebRole\bin\WorkingWithTables_WebRole.dll;
C:\myProject\WorkingWithTables\WorkingWithTables\WorkingWithTables_WorkerRole\bin\Debug\StorageClient.dll;
C:\myProject\WorkingWithTables\WorkingWithTables\WorkingWithTables_WorkerRole\bin\Debug\WorkingWithTables_WorkerRole.dll"

  我们不妨到数据库中看一下建立的这个数据库和表

  最后我们在WebRole中增加一些代码,来存取访问表存储的简单代码

  查询和数据绑定

1: protected void Page_Load(object sender, EventArgs e)  
2:    
3: {  
4:    
5: string statusMessage = String.Empty;  
6:    
7: try  
8:    
9: {  
10:    
11: StorageAccountInfo accountInfo = StorageAccountInfo.GetAccountInfoFromConfiguration("TableStorageEndpoint");  
12:    
13: // dynamically create the tables  
14:    
15: TableStorage.CreateTablesFromModel(typeof(MessageDataServiceContext), accountInfo);  
16:    
17: MessageDataServiceContext context = new MessageDataServiceContext(accountInfo);  
18:    
19: this.messageList.DataSource = context.Messages.Take(10);  
20:    
21: this.messageList.DataBind();  
22:    
23: }  
24:    
25: catch (DataServiceRequestException ex)  
26:    
27: {  
28:    
29: statusMessage = "Unable to connect to the table storage server. Please check that the service is running.<br>"  
30:    
31: + ex.Message;  
32:  

  向表存储中增加记录

1: protected void SubmitButton_Click(object sender, EventArgs e)  
2:    
3: {  
4:    
5: StorageAccountInfo accountInfo = StorageAccountInfo.GetAccountInfoFromConfiguration("TableStorageEndpoint");  
6:    
7: MessageDataServiceContext context = new MessageDataServiceContext(accountInfo);  
8:    
9: context.AddMessage(this.nameBox.Text, this.messageBox.Text);  
10:    
11: }  
12:  

  F5 运行后,先检查开发环境中的表存储服务是否启动。

  运行成功之后,我们还可以看一下SQL Server 数据库中的情况,比如Azure 开发环境对ParitionKey 和RowKey的理解和赋值情况

  通过上面的体验,我们发现Azure的表存储的定义和操作,与传统的表定义和操作还是有些不同,另外在编程体验上基本上完全整合了ADO.NET Data Service和ADO.NET Entry Framework的风格和技术。

  不过我们需要有比较清晰的概念和理解,就是目前Windows Azure 可能实现的是ADO.NET Data Service和ADO.NET Entry Framework的一个子集,如果对ADO.NET Entry Framework比较熟悉的,可能非常想知道ADO.NET Entry Framework的特性有多少在Azure上实现了,这个需要我们在之后慢慢探索。

  最后花一点时间,讨论一下Jim Nakashima的文章Windows Azure Walkthrough: Simple Table Storage中的要点,也就是在真正部署到正事Windows Azure运行环境时,比较流行的方法是使用上面讲的第二种方式,就是运行时刻创建表存储,而且最好是只创建一次。这个文章中讲了,主要是使用TableStorage.CreateTablesFromModel方法来实现。Jim解释说在运行环境下建表过程是程序化完成的,但是在Azure 的开发环境(Local Development Storage)使用工具预先建立表示必须的步骤,这是Azure 的开发环境的限制。 我想这非常可能是在Widnows Azure 的运行环境中,表存储不是简单理解成在某个一个SQL数据库上建立一个表这么简单,可能其过程是非常复杂和神奇的。 而Mark Seemann给出了使用 另外一方法,就是用PowerShell的方法在Azure 运行环境创建表,基本上就是用Shell 脚本调用TableStorage.CreateTablesFromModel方法。

0
相关文章