★★★本博客欢迎转载,但请注明版权、原文链接,谢谢。
Memento..
My stories in my way..
posts - 39,comments - 593,trackbacks - 13

 

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

image

激活后,点击右上角的Get Started

image

进入SDS,然后创建一个新的Solution。注意:一个invitation code只能创建一个Solution.

image

然后就来到了.NET SERVICES和SQL SERVICES的管理界面

image

点击顶部的Solution Credentials,修改solution的密码。改成一个自己好记的吧:)

image

好了,现在你已经有了自己好记的Solution名和密码了。

下载SDS的SDK http://www.microsoft.com/downloads/details.aspx?FamilyId=0B1FA5C6-EC9D-440B-939E-481DD05F2627&displaylang=en

安装SDK.

打开安装目录下的SSDS Explorer

image

在这里我们先复习一下上一篇讲的ACE模型。

image

我们的操作顺序也是根据这一模型来的。

首先要建立一个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!!

image

第一步当然是创建Authority.直接点击右边的image 按钮

此时文本框里会出现这样一段

image

在<s:Id>与</s:Id>中间输入Authority的名字,我这了就叫做food了。输入完成后点击image (因为根据上面的映射表,“新建”操作对应的HTTP Verb是"POST")

此时可能会弹出Credentials对话框,输入刚刚设置的Solution名字和密码即可。

如果操作成功,底部的状态框会出现image 。如果出现的是image ,说明操作有误,请根据错误提示进行更改。

操作成功后,顶部的地址栏会变成

image

对了,这就是这个Authority的URI了。上一篇里说了,对这个Authority的所有操作,其实就是对这个URI的HTTP操作。

现在我们来建立两个叫做"fruit"和"vegetable"的Container

点击image ,在<s:Id>和</s:Id>中输入"fruit",此时文本框如下图

image

点击image ,状态栏变成image

地址栏里显示的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

点击右边的image

将默认的<Entity />标签对的名字改为<Apple />

在<s:Id/>标签对中输入"apple1"

点击右边的属性区,依次添加属性。属性名就是节点标签名字,请注意更改。

描述属性的节点内有一个叫做"xsi:type"的attribute,表示当前节点的类型。

如<Weight xsi:type="x:decimal">1.2</Weight >,定义了一个叫做Weight的String属性,它的值是1.2。

apple1的最终外观如下:

image

同样的方法我们可以添加apple2

image 

再添加Pear类型的pear1

image 

呵呵,这样就添加完了。如果这个时候我想修改 apple1呢?只需要在地址栏中输入https://food.data.database.windows.net/v1/fruit/apple1,点击image ,修改好后再点击image 即可。(PUT对应UPDATE操作) 删除呢?呵,一个硕大的image 出现在底部,就不用我说了吧?

 

接下来我们就可以使用LINQ来玩弄它了!

基本语法如下
from e in entities [where condition] order by [property] select e

运算符和布尔操作符

image

比如,我们现在可以在地址栏中输入https://food.data.database.windows.net/v1/

在查询框中输入from e in entities where e.Id=="fruit" select e,点击image

此时文本框中就会出现fruit这个Container的内容。简单吧?

让我们循序渐进:
地址栏输入https://food.data.database.windows.net/v1/fruit

查询框输入from e in entities where e.Kind=="Apple" select e,点击image,此时文本框中就会展示出apple1和apple2的内容。image

 

再来。

执行查询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"]

读者可以继续练习更多:

  • from e in entities where e.Kind=="Apple" && (e["Color"]!="Red"||e["Color"]!="Blue") select e  (使用括号)
  • from e in entities where e.Kind=="Apple" && (e["Weight"]>=4) select e (使用表达式)
  • from e in entities where (e["Weight"]>=4) select e(多种Kind的Entity可以混合在一起查询)
  • from e in entities where e["RecordDate"]>="2008-12-15" select e(使用日期)
  • from e in entities select e (取得所有Entity)
  • from e in entities where e.Id>"pea" select e (字符串使用比较符号)

注意: 同一个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月

posted @ 2008-12-19 21:54 流牛木马 阅读(2915) 评论(15) 编辑

 

在上一篇里我已经提过了,有了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模块提供数据服务。

image

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.如下图

image

我们可以把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,功能上无任何变化。

posted @ 2008-12-19 18:32 流牛木马 阅读(3483) 评论(6) 编辑
 
 

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的结构图:

image

看到了吧? 我简单解释一下:

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部署到“云”里
以后我慢慢讲。

最后,经常关注我博客吧!我会一点一点地把[Azure Service Platform Step by Step]系列写下去,作为广大热爱微软技术的同仁参考用。by 流牛木马

 


 

posted @ 2008-12-19 18:31 流牛木马 阅读(5016) 评论(15) 编辑