|
|
SDS其实是很友善、很好玩的。这一节我们不会使用任何的编程语言, 流牛木马将带领大家,仅靠SDK里的一个叫做SSDS Explorer小工具来玩转SDS,熟悉和实现上一篇讲述的一些内容。很有趣的哦~
在申请Azure后,经过耐心漫长地等待,你会收到一封叫做“Do Not Delete! Invitation Code to Microsoft .NET Services and Microsoft SQL Services”的邮件。
终于开始了!从邮件中复制出Invitation Code,打开http://portal.ex.azure.microsoft.com/,激活你的SDS
激活后,点击右上角的Get Started
进入SDS,然后创建一个新的Solution。注意:一个invitation code只能创建一个Solution.
然后就来到了.NET SERVICES和SQL SERVICES的管理界面
点击顶部的Solution Credentials,修改solution的密码。改成一个自己好记的吧:)
好了,现在你已经有了自己好记的Solution名和密码了。
安装SDK.
打开安装目录下的SSDS Explorer
在这里我们先复习一下上一篇讲的ACE模型。
我们的操作顺序也是根据这一模型来的。
首先要建立一个Authority,然后在它下面建立不同的Container,最后再在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,它们也属于两种不同类型。。
接着我们在复习一下基本操作与HTTP Verb的映射表
| HTTP Verb | SDS Operation |
| GET | Fetch,Query 查询 |
| POST | Create 新建 |
| PUT | Update 修改 |
| DELETE | Delete 删除 |
好了,够了,开工!进入SSDE Explorer!!
此时文本框里会出现这样一段
在<s:Id>与</s:Id>中间输入Authority的名字,我这了就叫做food了。输入完成后点击 (因为根据上面的映射表,“新建”操作对应的HTTP Verb是"POST")
此时可能会弹出Credentials对话框,输入刚刚设置的Solution名字和密码即可。
如果操作成功,底部的状态框会出现 。如果出现的是
,说明操作有误,请根据错误提示进行更改。
操作成功后,顶部的地址栏会变成
对了,这就是这个Authority的URI了。上一篇里说了,对这个Authority的所有操作,其实就是对这个URI的HTTP操作。
现在我们来建立两个叫做"fruit"和"vegetable"的Container
点击 ,在<s:Id>和</s:Id>中输入"fruit",此时文本框如下图
地址栏里显示的URI是https://food.data.database.windows.net/v1/fruit,对了,这就是"fruit"这个Container的URI
现在就是在fruit中加入具体的Entity了。(vegetable类似,略)。
我们假设fruit中有两种Entity,
一种是Apple,包括的属性如下:
| 属性名 | Weight | Color | Availability | RecordDate |
| 类型 | Decimal | String | Boolean | DateTime |
另一种是Pear,包括的属性如下
| 属性名 | Weight | IsPopular | ProducingArea |
| 类型 | Decimal | Boolean | String |
现在我们来添加第一个Apple: "apple1"
由于我们是要在fruit这个container中插入Entity,所以操作时请保持URI为https://food.data.database.windows.net/v1/fruit
将默认的<Entity />标签对的名字改为<Apple />
在<s:Id/>标签对中输入"apple1"
点击右边的属性区,依次添加属性。属性名就是节点标签名字,请注意更改。
描述属性的节点内有一个叫做"xsi:type"的attribute,表示当前节点的类型。
如<Weight xsi:type="x:decimal">1.2</Weight >,定义了一个叫做Weight的String属性,它的值是1.2。
apple1的最终外观如下:
同样的方法我们可以添加apple2
再添加Pear类型的pear1
呵呵,这样就添加完了。如果这个时候我想修改 apple1呢?只需要在地址栏中输入https://food.data.database.windows.net/v1/fruit/apple1,点击 ,修改好后再点击
即可。(PUT对应UPDATE操作) 删除呢?呵,一个硕大的
出现在底部,就不用我说了吧?
接下来我们就可以使用LINQ来玩弄它了!
基本语法如下
from e in entities [where condition] order by [property] select e
运算符和布尔操作符
比如,我们现在可以在地址栏中输入https://food.data.database.windows.net/v1/
在查询框中输入from e in entities where e.Id=="fruit" select e,点击
此时文本框中就会出现fruit这个Container的内容。简单吧?
让我们循序渐进:
地址栏输入https://food.data.database.windows.net/v1/fruit
查询框输入from e in entities where e.Kind=="Apple" select e,点击,此时文本框中就会展示出apple1和apple2的内容。
再来。
执行查询from e in entities where e.Kind=="Apple" && e["Color"]=="Red" select e
则只能看到apple2的内容,因为只有apple2的"Color"等于"Red"
读者走到这里可能有疑问了。为什么是e.Kind和e["Color"]呢?到底是用"."还是用"[]"呢?解释一下,对于Entity的元数据属性(metadata property),需要使用".",如e.Id,e.Kind;对于普通属性,则使用"[]",如e["Color"]
读者可以继续练习更多:
注意: 同一个Kind的Entity可以包含的不同的属性(不推荐)。比如我们可以把apple1中的<Availability />属性删除掉,完全没有影响。可以执行以下查询进行测试
from e in entities where e["Availability"]==false && e.Kind=="Apple" select e
怎么样?很简单很有趣吧?
“赤手空拳”与SDS“肉搏"到此为止。在下一篇中,我们将使用C#语言,对以上所有的操作进行编程实现,敬请关注。
注:SQL Data Services现已更名为SQL Azure ——2009年7月
在上一篇里我已经提过了,有了SQL Services,作为一般的中小型应用程序开发,你完全可以忘掉SQL Server 200X的存在。有这么神奇吗?现在流牛木马就来详细地了解SQL Services是何方神圣。
在大多数情况下,Web应用程序都需要依赖另一个数据库服务器。这个数据库服务需要专业的IT人士来维护。在你部署应用程序之前,你需要考虑太多:这个数据服务器有足够的容量么?性能怎么样?稳定和安全?负载?还有其他太多太多未知的因素…
按照云计算的基本概念,解决以上问题,我们需要Cloud-based data platform,即把数据服务都放在云端,依靠强大的云端操作系统和平台硬件来处理。对了。SQL Data Services(SDS)就是这样一种基于"云"的数据平台。
什么是SDS?
SDS是一个面向internet的强大database,提供强壮、安全、灵活数据库服务。SDS提供SOAP和REST两种标准接口,与传统编程语言脱离,让使用任何语言的coder都可以轻易地操作它。
为什么要使用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/<container-id>
如https://food.data.database.windows.net/v1/fruit/
https://food.data.database.windows.net/v1/<container-id>/<entity-id>
如https://food.data.database.windows.net/v1/fruit/apple1
SDS的编程模型,CRUD,说白了就是对以上这些URI的HTTP操作。下表是一个HTTP Verb到SDS Operation的映射
| HTTP Verb | SDS Operation |
| GET | Fetch,Query,(即Select) |
| POST | Create,(即Insert) |
| PUT | Update |
| DELETE | Delete |
好了,这一节到此结束。:) 下一节我会通过一个小工具来玩转SDS的全部功能。
注:SQL Data Services现已更名为SQL Azure,功能上无任何变化。
Azure,这个简单优美的单词,从2008年11月28日开始,被赋予了另所有程序员心潮澎湃的意义。对,她就是庞大的微软帝国的一次豪赌。
Azure,全程Azure Services Platform。主页是Http://www.azure.com 。这是很新很新的玩意儿,目前不管是在国内还是国外,都很少有人研究它。
Azure是啥?简单的说,Azure services Platform是一个基于微软数据中心的Internet云端服务平台,为我们提供了一个实时操作系统和一系列的开发、存储、数据存储、Hosting等服务。更简单地说:Azure就是传说中的云计算,是微软实现云计算的平台。
上一段内容比较概括和振奋人心。相信很多人和我一样,一直听说“云计算”,但是从来都不知道云计算到底为何物。"云计算"这一概念性的东西,被媒体炒作得跟当年的"Web 2.0"一样热。终于,Azure这一亲切的平台带我们很轻松地去体验"云计算"的云里雾里。对,亲切。因为Azure和其他几乎所有的微软技术一样,有一个莫大的好处:上手非常容易。
对于我们这些早已习惯和熟悉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有一点基本的认识了,让我们继续。
Azure Platform的结构图:
看到了吧? 我简单解释一下:
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 Tools for Microsoft Visual Studio
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部署到“云”里
以后我慢慢讲。
最后,经常关注我博客吧!我会一点一点地把[Azure Service Platform Step by Step]系列写下去,作为广大热爱微软技术的同仁参考用。by 流牛木马