西游记后传的片尾曲:Azure Services Platform Step by Step1
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 15:46:44
Azure,全程Azure Services Platform。主页是Http://www.azure.com 。这是很新很新的玩意儿,目前不管是在国内还是国外,都很少有人研究它。
对于我们这些早已习惯和熟悉Visual Studio各种开发的dev来说,我们很容易就会爱上Azure.官方也说了:Get Started Quickly Using Your Existing Skills. 也就是说,你根本不需要学习更多的知识,就可以通过Azure开发各种云端应用,体验“云计算”。
也许几句话根本介绍不完。确实,我也是看了好几天Whitepaper,SDK和Forum才完全了解了Azure的结构和技术。先允许我用几句“小农意识”的话来概括Azure的好处吧:使用Azure,你再也不用到处去找支持ASP.NET的虚拟主机来放置Web Application和Web Services了,因为Windows Azure提供“云里雾里”的HOSTING,比普通的虚拟主机更强大;你再也不用去寻找盗版SQL Server 200X和数据库服务器了,因为在SQL Services里提供了RESTful的数据存储,方便到家;你再也不用为你服务器的稳定性烦恼,因为你的云端应用都部署在Azure上,使用微软的infrastructure,稳定性与安全性由微软帝国来保证……
怎么样?很不错吧?哈哈,其实这才是Azure的皮毛,我只提到了Azure最基本最容易理解的几个服务而已。想要深入了解?继续关注我Blog吧,我会在接下来的几个月对Azure进行全面研究和解析,并且制作一些完整的应用程序。
好,现在你对Azure有一点基本的认识了,让我们继续。
1.Azure platform包括4个部分:Windows Azure,.NET Services,SQL Services,以及微软早就提供出来的Live Services.很显然,另大多数人激动的只有前3个。4个部分都包括很多具体的服务,我们在以后会一一介绍。
2.你所开发的应用程序,可以被多种客户端使用。
3.你所开发的应用程序,可以放在你自己的服务器,也可以通过Windows Azure提供的服务,部署在云端。不管你的程序在“平地”还是在“云端”,它们都可以调用Azure Platform提供的其他各种服务。
了解Azure的基本结构后,如何进行学习?
首先,你需要到官方网站http://azure.com去申请内测资格。地址http://www.microsoft.com/azure/register.mspx
说明一下,不然很多人可能会confused.如上文说的,Azure包括Windows Azure,.NET Services,SQL Services,Live Services4块。不知道微软怎么想的,它把Windows Azure和Live Services的dev portal放在了一起,地址是http://lx.azure.microsoft.com/ 。而.NET Services和SQL Services的dev portal放在了另一个地方:http://portal.ex.azure.microsoft.com/ .在申请内测资格(invitation code或token)的时候不用区别,只需要申请一次就可以了。但是微软在发放invitation code的时候,会对于以上两个不同的portal分别发放。
可以参考一下国外的一篇博客Setting Up the Windows Azure Services Platform。不过作者只收到了SQL Services+.NET Services的invitation code.
一定要强调的是,等邀请码是很需要耐心的。看看老外写的这篇文章:Waiting for Windows Azure Tokens? seems many are in the same boat ..
所以,填写资料的时候一定要认真……如果有不明白直接给Sriram Krishnan 发邮件,他自称"I work for the Windows Azure team and I'm the token/invitation master in sorts”,我拿到token之前就骚扰过他……(sriramk@microsoft.com)
然后,你需要下载以下官方学习资源:
官方的资料比较多,以下两个最重要。
Introducing the Azure™ Services Platform:这是一个30多页的pdf文件,对Azure进行了全面的介绍(不涉及技术)。
Azure Services Training Kit - PDC Preview:这是官方的教程,色香味俱全。也是目前能够找到的唯一教程。(我google几天了,目前真的没有其他第3方教程了。)
接下来,当然是SDK:
Windows Azure SDK
Windows Azure Tools for Microsoft Visual Studio
Microsoft .NET Services SDK
Microsoft SQL Data Services SDK
Live Framework Documentation and Resources
这里需要再次说明一下:对于Azure platform的4个部分,都有不同的SDK和工具。其中只有Windows Azure稍微特殊一点,需要Vista或windows2008操作系统。
Then,开发:
Azure的开发过程与普通.NET的开发过程没啥区别:
使用Visual Studio开发 - 开发中使用Azure的各种服务 - 发布- 登陆dev portal部署到“云”里
以后我慢慢讲。 在上一篇里我已经提过了,有了SQL Services,作为一般的中小型应用程序开发,你完全可以忘掉SQL Server 200X的存在。有这么神奇吗?现在流牛木马就来详细地了解SQL Services是何方神圣。什么是SDS?
为什么要使用SDS?
Flexibility and scale,Business-ready reliability and security,Developer agility
SDS在Azure Services Platform中的地位:
SDS是Azure四大模块之一,在云端为天上地下的应用程序提供数据服务,也为其他的Azure Services模块提供数据服务。
图片看不清楚?请点击这里查看原图(大图)。
SDS支持的数据类型
SDS支持 String(字符串), Decimal(十进制数), Boolean, DateTime, and Binary 几种基本的数据类型,还支持一种叫BLOB(binary large object )数据类型,允许你存储任何格式的内容。
申请地址:
http://go.microsoft.com/?linkid=9373222
Dev Portal
http://portal.ex.azure.microsoft.com
ACE模型
终于进入重点了。在使用SDS之前,你必须了解SDS的ACE(Authority,Container,Entity)模型。Authority是最高level的对象。一个Authority包含了多个Container,一个Container包含多个Entity.如下图
我们可以把Authoriy想象成SQL Server中一个数据库实例(SQL Server instance)。那么,Container就好比实例中的多个相互独立的数据库了。而Entity就相当于一条记录。这样类比只是一个直观的概念,其实ACE模型和关系数据库是有区别的。
如果要准确类比的话,Container可以等同于关系数据库中的一个独立database,也可以等同于一个table。Entity是一条数据记录没错,但是Entity的是任意的,不需要像关系数据库里那样,在一个table里有一个特定的结构定义。大家看上图可以注意到,一个Container可以包含多种结构不同的Entity。
举个实际例子,如上图所示,我们可以创建一个叫做"food"的Authority,其下包括名为"fruit"和"vegetable"两个Container. Container["fruit"]中包括3个实体,分别是"apple1","apple2","pear1".注意,这里我们假设五角星代表pear,三角形代表apple。这样,在这个 Container["fruit"]就包括了两种类型的三个Entity。同样,在Container["vegetable"]中,我们假设圆形是白菜cabbage,方形是西红柿tomato,我们又有了"tomato1","tomato2" ,"cabbage1"三个entity,它们也属于两种不同类型。。
呵呵,根传统的instance-database-tabale-row的模型很不一样吧?不要紧,现在先记住基本的结构就好了,在下一节,你会有机会动手把玩一下它们。
编程模型
每个Authority都对应特定的URI。比如一个叫做food的Authority,它的HTTP地址就是https://food.data.database.windows.net/v1 ,可以直接在浏览器中打开(在浏览器zhogn1直接打开,等同于执行HTTP的GET方法)
有了Authority的URI,你会发现,Container和Entity的URI也很容易找到了。格式如下:
https://food.data.database.windows.net/v1/
如https://food.data.database.windows.net/v1/fruit/
https://food.data.database.windows.net/v1/
如https://food.data.database.windows.net/v1/fruit/apple1
好了,这一节到此结束。:) 下一节我会通过一个小工具来玩转SDS的全部功能。 SDS其实是很友善、很好玩的。这一节我们不会使用任何的编程
这一篇,我们会详细讲解如何使用程序员的方法来操作SDS。
SDS提供SOAP和REST两种接口,这里我们是用REST+C#的方法来讲解。SOAP与之殊途同归,请有兴趣的同学自己查阅MSDN。
闲话少说,下面我们以创建Authority为例,给出REST操作SDS的“万能框架”:
public string CreateAuthority()
{
const string AuthorityTemplate =
@"
if (String.IsNullOrEmpty(ServiceUri))
{
throw new ArgumentOutOfRangeException("ServiceUri");
}
string authorityUri = null;
try
{
string requestPayload = string.Format(AuthorityTemplate, authorityId);
//步骤二:建立用以传送数据的HttpWebRequest对象
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServiceUri);
//步骤三:将用户名和密码放置在HttpWebRequest对象的Credentials中
request.Credentials = new NetworkCredential(userName, password);
//步骤四(:设置Http方法。HTTP方法与数据操作方法的对照: POST=create; PUT=update; DELETE=delete; GET=retrieve 。在这个例子中,我们需要create,所以选择POST方法。
request.Method = "POST";
//步骤五(蓝色部分):传送数据到服务器。显然,这一部分只有在POST方法和PUT方法时才会有,对于GET方法和DELETE方法则不需要。
UTF8Encoding encoding = new UTF8Encoding();
request.ContentLength = encoding.GetByteCount(requestPayload);
request.ContentType = XmlContentType;
// 传送数据
using (Stream reqStm = request.GetRequestStream())
{
reqStm.Write(encoding.GetBytes(requestPayload), 0, encoding.GetByteCount(requestPayload));
}
//步骤六 :获取服务器响应,根据服务器的相应获取操作结果
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
if (response.StatusCode != HttpStatusCode.Created)
{
Console.WriteLine("Failed to create authority");
}
authorityUri = "https://" + authorityId + ".data.database.windows.net/v1/";
}
catch (WebException ex)
{
Console.Error.WriteLine(ex);
HttpWebResponse response = ex.Response as HttpWebResponse;
if (response != null)
{
string errorMsg = ReadResponse(response);
Console.WriteLine(string.Format("Error: {0}", errorMsg));
Console.WriteLine("Unexpected status code returned: {0} ", response.StatusCode);
}
}
return authorityUri;
}
至此,数据库的四种操作(CRUD,Create,Read,Update,Delete)我们都已经讲过了。对,就是这么容易。 由于时间关系,我只在附件内写出了Authority,Container,Entity三种结构的Create操作。相信读者看完这篇文章后,自己改写成其他操作并非难事。 .NET Services在Azure Services Platform中的位置如下图所示。 图片看不清楚?请点击这里查看原图(大图)。 .NET Services首先是Services,我们可以在portal里对它们进行配置和管理,同时在程序里使用他。另外,和SQL Services一样,.NET Services不仅可以被云端程序使用,普通的应用程序也可以使用它。 .NET Services包括三个部分:Access Control,Service Bus,Workflow。在接下来的几节中我们会介绍。本节只做概要介绍。 Access Control :随着应用程序越来越复杂,角色越来越多,控制用户的access权限变得很重要。不仅单纯是网站页面的浏览权限问题,在各种服务中也需要,比如WCF服务。主流的解决反感是让用户提供token,应用程序根据token去判断权限。Access Control就是提供这样一种服务。她规定了自己的一种基于token规则。配置用户权限、识别token判断用户权限这些事再也不需要程序员自己来做了!Access Control会帮你完成得很好! Service Bus: 这个功能太好解释了。"Service Bus",顾名思义,就是把"Service"放在"Bus"里。事实也是这样,Service Bus就是把Web Service的EndPoint封装在一起,方便客户段使用者发现可以使用的Web Service,这就是Service Bus的主要功能。此外,Service Bus还有一牛x功能:网络地址转换和穿防火墙——以后有机会再慢慢说。 Workflow :Workflow相信很多做.net开发的朋友已经再熟悉不过了。.NET Services提供的Workflow服务很容易理解:就是把平时大家用的本地WF逻辑运行在云端。这倒是一个非常实用的服务。 清楚了吧?呵呵,其实Azure这一整套平台提供的都是"思想大于技术"的东西,不增加程序的负担,让开发者使用已有的技术体验到云计算带来的好处。 没有安装Microsoft .NET Services (Dec 2008 CTP) SDK的朋友直接直接下载本文附件使用。 使用实例: 首先,打开Microsoft .NET Services (Dec 2008 CTP) SDKSamplesServiceBusGettingStartedEchoCS35 目录下的Visual Studio解决方案EchoSample.sln 图片看不清楚?请点击这里查看原图(大图)。 输入方案的用户名和密码。(在http://portal.ex.azure.microsoft.com中设置的)验证成功后控制台会给出一个类似"sb://servicebus.windows.net/services/sixsix/EchoService”的URI。 图片看不清楚?请点击这里查看原图(大图)。 然后再启用一个客户端(Client)的调试实例。同样要求输入Solution名和密码。 图片看不清楚?请点击这里查看原图(大图)。 此时客户端已经已经连上服务端的服务了。 相信大家通过解决方案名都已经知道这个服务的作用了,很简单,就是客户段输入字符串到服务端,服务端向客户端传回同样的字符串。 图片看不清楚?请点击这里查看原图(大图)。 通过实例看Service Bus有啥用: 显然,这个实例中使用的服务是网络编程中最基础的Echo服务。我们使用了Username/Password的验证方式。 读者可以尝试关掉服务端。你会发现,客户端没有任何变化,只是不能再调用服务,不能得到echo而已。这说明Service Bus其实起了一个桥接作用。服务端程序无论运行在怎样的网络环境下,无论是在NAT之内还是公共环境,也不在乎这个服务的IP如何更改,甚至服务处于防火墙后面,客户端对其的定位依赖于Service Bus提供的统一URI,Service Bus为服务提供了注册与地址解析。在本例中,Echo服务的地址始终是"sb://servicebus.windows.net/services/sixsix/EchoService/”,该服务的实际网络环境和地理位置,对客户机是完全透明的。这是上一节提到的,Service Bus的一个实用的牛X功能。 图片看不清楚?请点击这里查看原图(大图)。 他的具体理解是这样的:Windows Azure提供了对ASP.NET应用程序的托管,并且,“云计算”离我们那么近,只要把ASP.NET应用程序部署到Window Azure 上,以前的ASP.NET应用程序就变成“云应用”了! 那么,Windows Azure应该怎么用?它到底比一般的虚拟主机牛在哪儿?那还的从Windows Azure的服务架构说起。 Roles(角色): 先说说角色问题吧,非常重要。不理解Windows Azure关于Role的概念,是没办法懂得微软煞费苦心的”云”的。 部署到Windows Azure上的程序扮演着以下两种角色:Web Role和Worker Role。 Web Role:顾名思义,就是提供Web服务的角色。简单地说,Web Role就是ASP.NET Applicantion,是你本地ASP.NET Application的云端版本!支持HTTP/HTTPS协议,还能提供WCF服务。 这个Workder Role颇具有“云”的概念:一直在云端悄悄运行,地面上的人看不到它,但却不能没有它。 Role的附件 Web Role和Worker Role这两个小朋友也是带了家属一起加入到Windows Azure这个大家庭的,它们暂时包括: 把Local Storage作为缓存使用 健康报告 呵呵,这些也是普通的虚拟主机无法有的吧? “云主机”的功能是非常强大的,配套是非常完善的! 服务定义(Service Definition) 程序生活在Windows Azure这个新环境里往往会感到纳闷,会怀疑人生:我到底是Web Role还是Worker Role呢? 这就需要我们来帮助它们了。 Windows Azure使用了一类后缀.csdef的文件来定义服务。包括:这个服务到底似乎Web Role还是Worker Role?使用HTTp还是HTTPS ? 哪里去找Local Storage这个亲家来帮忙?诸如此类的信息。 图片看不清楚?请点击这里查看原图(大图)。 Web Role和Worder Role这两个小朋友在得到关于职业规划的答复后,又产生了对职业生涯方面的疑问:具体应该怎么做呢? 这就需要用到服务配置了。顾名思义,就是对具体服务的具体配置了。我们采用.cscfg为后缀的文件来保存它们。它担当着与ASP.NET中的Web.Config文件类似的任务,且任务更重。 图片看不清楚?请点击这里查看原图(大图)。很简单吧? 所有的
相信大家看完本套教程前7篇后,已经对Azure Services Platform已经有了一个比较全面的了解。现在我们一起动动手,以最最简单的留言板为例,使用Azure Services Platform中的的Windows Azure作为主机、SQL Data Services作为数据存储,来了解开发、部署Azure应用程序的全过程。 public string DeleteEntity(string entityId)
{
//由于删除是HTTP中的Delete操作,所以无步骤一和步骤五
string EntityUri = string.Format("https://{0}.data.database.windows.net/v1/{1}/{2}",
authorityId, containerId, entityId);
try
{
//步骤二: WebRequest request = HttpWebRequest.Create(EntityUri);
//步骤三: request.Credentials = new NetworkCredential(userName, password);
//步骤四: request.Method = "DELETE";
//步骤六:using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
if (response.StatusCode != HttpStatusCode.OK)
{
Console.WriteLine("Failed to delete the entity resource.");
}
}
}
catch (WebException ex)
{
string errorMsg = ex.Message;
Console.WriteLine("Deletion failed: {0}", errorMsg);
if (ex.Response != null)
{
using (HttpWebResponse response = ex.Response as HttpWebResponse)
{
Console.WriteLine("Unexpected status code returned: {0}", response.StatusCode);
}
}
}
} UPDATE的
【准备知识0】INTRODUCING THE AZURE SERVICES PLATFORM
【准备知识1】忘掉SQL Server 200X——Introducing SQL Data Services(SDS)
【准备知识2】别把Windows Azure当虚拟主机使—理解Windows Azure服务架构
【准备知识3】赤手空拳玩转 SQL Data Services(SDS)
【准备知识4】SQL Data Services 编程基础
最终效果图如下:(也可通过http://ibm.cloudapp.net查看网络版本)
开发过程:
1.启动本机Windows Azure SDK里的Development Fabric,打开本机的调试运行环境。
关于Web Role和Worker Role的区别于联系,请参考【准备知识2】。
图片看不清楚?请点击这里查看原图(大图)。
3.打开SQL Data Services SDK里的SDS Explorer。配置好用户名、密码;新建Authority和Container。 具体操作过程请参考【准备知识3】。
图片看不清楚?请点击这里查看原图(大图)。图片看不清楚?请点击这里查看原图(大图)。
4.在这里,我们新建了名叫“guestbook”的Authority和一个叫做“1st”的Container。现在我们将它们配置到GuestBook_WebRole项目的web.config文件里面,以便程序读取。
5.在GuestBook_WebRole中新建CloudDataHelper类。里面写入对SQL Data Service的一些基本操作。详细代码见附件。
以下是读取配置文件和存储数据的函数示例。
6.在Default.aspx页中拖入几个控件和简单的逻辑代码。呵呵,这就不用我教了吧?详细内容同样包含在附件里。
7.F5进行Debug运行。如果运行成功的话,首页会出现在你的面前——就像调试传统的ASP.NET Web Application一样。同时,在Development Fabric里会出现一些相关的信息。
如果发布成功,此时VS会弹出两个框在你面前:
包含发布文件的文件夹和Azure Services Developer Portal(需用LiveID登录)
图片看不清楚?请点击这里查看原图(大图)。
如果你有关于Azure Services Developer Portal的疑问,请参考【准备知识0】.
图片看不清楚?请点击这里查看原图(大图)。
图片看不清楚?请点击这里查看原图(大图)。
10.介绍一下Hosted Service的主界面吧:如下图。每个Host在Windows Azure上的应用程序包括两种状态(或者理解为两个不同的部署平台):Production和Staging. 简单地说,Production是正式部署的地方,Staging是放内部测试部署的备份服务器。
图片看不清楚?请点击这里查看原图(大图)。
11.我们先把我们的应用程序部署到Staging服务器上。点击上图中的Deploy按钮,进入以下界面。根据提示上传刚才Publish时生成的两个文件。
图片看不清楚?请点击这里查看原图(大图)。
12.在Staging服务器上Deploy成功后,点击下图中间的圆圈,将Staging服务器上的内容交换到Production服务器上,并点击”Run”按钮。注意:这两个过程都需要较长的等待。
图片看不清楚?请点击这里查看原图(大图)。
13.如果部署成功,你会看到类似下图的界面。当“WebRole”标识下出现绿色的小勾并带有”Started”字样,说明此时你已经可以在网络上访问你的“云应用程序”了。如http://ibm.cloudapp.net图片看不清楚?请点击这里查看原图(大图)。 在本系列的第一篇【Azure Services Platform Step by Step-第1篇】INTRODUCING THE AZURE SERVICES PLATFORM里就介绍过了,Azure Services Platform包括4个部分。其中,Windows Azure是支撑整个微软云平台(Azure Services Platform)的基础。换句话说,Windows Azure是“云平台的操作系统”,它提供了云平台最基本、最重要的
图片看不清楚?请点击这里查看原图(大图)。
Windows Azure由两个重要部分构成:
虚拟化计算服务(提供基于VM主机。在上一篇里已经示范过它。)
各种数据存储服务。即本文要介绍的Windows Azure Storage。
Windows Azure Storage可以让程序员存储他们想存储的任何数据。按照“云计算”的概念,数据一旦存储到“云”中,就永远不会丢失,程序员可以在任何时候、从任何终端和任何地方获取任意大小的数据。Windows Azure Storage正是继续遵循这一思想。
Windows Azure Storage由三个重要部分构成:
Windows Azure Blob:存储大型数据
Windows Azure Table:存储表数据。类似关系数据库中的数据表,但不同。
Windows Azure Queue:为异步工作提供分派消息服务。有点类似Windows系统自身的消息队列。
接下来我们来以此介绍这3个数据服务。
Windows Azure Blob
Windows Azure Blob的数据模型非常简单,看一眼就不会忘记。我们真的大可以把它想象成云端的一个无限大的硬盘。它的结构如下图:
图片看不清楚?请点击这里查看原图(大图)。
大家先别看“Block”部分。很一目了然吧? 一起继续YY: 如果Account是那块硬盘,Container就代表不同分区(可惜分区里没有文件夹概念),Blob就是分区根目录里不同的文件。那么上图的意思是:在我的那块叫做"sally”的硬盘里,有"pictures”和"movies”两个分区,"pictures”分区根目录里有"IMG001.JPG “”IMG002.JPG”这两个文件。
http://
例如:http://maheshwar.blob.core.windows.net/livesearchimages/AcacusDesert_EN-US1025081982.jpg (这是一张图片,点击链接可直接访问)
现在可以继续解释上图中的“Block”了。既然是采用REST的方式,就是通过HTTP的方式,那么真正很大很大的文件,比如1G的电影,要直接传上去显然是一件非常困难的事。Block就是为解决这个问题而存在的。只要你心情好,你大可以把这个电影分割成1000个1M的Block来上传。Block对下载流程是透明的,下载者根本不知道也不用去知道它正在下载的文件被分成了多少个block。
(事实上笔者真的用它做自用的网络硬盘,从开发和使用角度来说都非常方便,以后有机会我整理一下代码与大家分享一下)。
Windows Azure Table
正在使用VS200X来开发简单ASP.NET应用程序的时候,你会许和很多人一样有以下两个重要习惯:使用关系数据库(如SQL Server);数据库中的某些表直接对应程序里的实体类。你或许会使用代码生成工具,ORM工具,或者自己写三层架构来完成关系数据库to对象的映射。发现没,此时的你是多么希望能够直接将实体存入数据库当中啊!
Windows Azure Table服务就是用来解决这个问题的。它可以直接将实体类、实体对象存入表格结构当中。它让太多的人感到欣喜。
它比较类似传统关系数据库当中的表格,但是又有很大不同。先看下图的结构:
图片看不清楚?请点击这里查看原图(大图)。
与你想的一样,它支持LINQ, REST。HTTP地址是 http://
这部分内容比较多,过几天我会单独使用一节的内容来做一个简单Demo讲解它的使用。
Windows Azure Queue
Windows Azure Queue因为Windows Azure的服务架构而存在——这个一个需要消息队列的架构。
我们在《【Azure Services Platform Step by Step-第7篇】别把Windows Azure当虚拟主机使——理解Windows Azure服务架构》里了解过,Windows Azure VM中是如何引入了Web Role和Worker Role这一非常创新的概念,从而脱离了普通虚拟主机,晋升为“云主机” : )
Windows Azure Queue最常见的一个应用就是作为Worker Role和Web Role之间通讯的消息队列。
再举个例子。Web Role是前台卖牛肉面的,Worker Role是后台煮牛肉面的。顾客只能接触到Web Role这个店员,它收集不同顾客的需求,保持先来后到的顺序记录这些需求到一叠纸条上递给大厨Worker Roler。大厨Worker Role带着口罩,什么话也说不出来,他的工作就是按顺序完成纸条记录的任务。Windows Azure Queue就充当了这个“任务纸条”的作用。
理解完了“牛肉面”的例子,再看看下图结合一下“云计算”的实际吧。是不是很容易理解呢?
图片看不清楚?请点击这里查看原图(大图)。
Windows Azure Table 与SQL Data Services 的重要不同之处:
博客园网友 montaque和老赵同志在《【Azure Services Platform Step by Step-第8篇】开发部署Azure留言板》一文的评论中一起讨论了Windows Azure Table和SQL Data Services的不同。
Windows Azure Table 旨在提供轻便快捷低成本的大规模存储数据,包含实体和属性。它不是关系数据库,所以不能提供类似SQL中joins的方法,也不能管理 foreign keys。
SQL Data Services旨在提供严谨的关系数据方法。
在当前的Azure版本中(Azure平台第一个版本,feasure还很不完善),如果开发者对joins或foreign keys等关系数据库的功能需求较大,你可以选择SQL Data Services,反之建议使用开发更为快捷的Windows Azure Table。