中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Azure Services Platform Step by Step
Azure,這個(gè)簡單優(yōu)美的單詞,從2008年11月28日開始,被賦予了另所有程序員心潮澎湃的意義。對,她就是龐大的微軟帝國的一次豪賭。

  Azure,全程Azure Services Platform。主頁是Http://www.azure.com 。這是很新很新的玩意兒,目前不管是在國內(nèi)還是國外,都很少有人研究它。

  Azure是啥?簡單的說,Azure services Platform是一個(gè)基于微軟數(shù)據(jù)中心的Internet云端服務(wù)平臺,為我們提供了一個(gè)實(shí)時(shí)操作系統(tǒng)和一系列的開發(fā)、存儲、數(shù)據(jù)存儲、Hosting等服務(wù)。更簡單地說:Azure就是傳說中的云計(jì)算,是微軟實(shí)現(xiàn)云計(jì)算的平臺。

  上一段內(nèi)容比較概括和振奮人心。相信很多人和我一樣,一直聽說“云計(jì)算”,但是從來都不知道云計(jì)算到底為何物。"云計(jì)算"這一概念性的東西,被媒體炒作得跟當(dāng)年的"Web 2.0"一樣熱。終于,Azure這一親切的平臺帶我們很輕松地去體驗(yàn)"云計(jì)算"的云里霧里。對,親切。因?yàn)锳zure和其他幾乎所有的微軟技術(shù)一樣,有一個(gè)莫大的好處:上手非常容易。

  對于我們這些早已習(xí)慣和熟悉Visual Studio各種開發(fā)的dev來說,我們很容易就會愛上Azure.官方也說了:Get Started Quickly Using Your Existing Skills. 也就是說,你根本不需要學(xué)習(xí)更多的知識,就可以通過Azure開發(fā)各種云端應(yīng)用,體驗(yàn)“云計(jì)算”。

  也許幾句話根本介紹不完。確實(shí),我也是看了好幾天Whitepaper,SDK和Forum才完全了解了Azure的結(jié)構(gòu)和技術(shù)。先允許我用幾句“小農(nóng)意識”的話來概括Azure的好處吧:使用Azure,你再也不用到處去找支持ASP.NET的虛擬主機(jī)來放置Web Application和Web Services了,因?yàn)閃indows Azure提供“云里霧里”的HOSTING,比普通的虛擬主機(jī)更強(qiáng)大;你再也不用去尋找盜版SQL Server 200X和數(shù)據(jù)庫服務(wù)器了,因?yàn)樵赟QL Services里提供了RESTful的數(shù)據(jù)存儲,方便到家;你再也不用為你服務(wù)器的穩(wěn)定性煩惱,因?yàn)槟愕脑贫藨?yīng)用都部署在Azure上,使用微軟的infrastructure,穩(wěn)定性與安全性由微軟帝國來保證……

怎么樣?很不錯(cuò)吧?哈哈,其實(shí)這才是Azure的皮毛,我只提到了Azure最基本最容易理解的幾個(gè)服務(wù)而已。想要深入了解?繼續(xù)關(guān)注我Blog吧,我會在接下來的幾個(gè)月對Azure進(jìn)行全面研究和解析,并且制作一些完整的應(yīng)用程序。

  好,現(xiàn)在你對Azure有一點(diǎn)基本的認(rèn)識了,讓我們繼續(xù)。

    1.Azure platform包括4個(gè)部分:Windows Azure,.NET Services,SQL Services,以及微軟早就提供出來的Live Services.很顯然,另大多數(shù)人激動的只有前3個(gè)。4個(gè)部分都包括很多具體的服務(wù),我們在以后會一一介紹。

  2.你所開發(fā)的應(yīng)用程序,可以被多種客戶端使用。

  3.你所開發(fā)的應(yīng)用程序,可以放在你自己的服務(wù)器,也可以通過Windows Azure提供的服務(wù),部署在云端。不管你的程序在“平地”還是在“云端”,它們都可以調(diào)用Azure Platform提供的其他各種服務(wù)。

  了解Azure的基本結(jié)構(gòu)后,如何進(jìn)行學(xué)習(xí)?

  首先,你需要到官方網(wǎng)站http://azure.com去申請內(nèi)測資格。地址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放在了另一個(gè)地方:http://portal.ex.azure.microsoft.com/ .在申請內(nèi)測資格(invitation code或token)的時(shí)候不用區(qū)別,只需要申請一次就可以了。但是微軟在發(fā)放invitation code的時(shí)候,會對于以上兩個(gè)不同的portal分別發(fā)放。

 可以參考一下國外的一篇博客Setting Up the Windows Azure Services Platform。不過作者只收到了SQL Services+.NET Services的invitation code.

  一定要強(qiáng)調(diào)的是,等邀請碼是很需要耐心的??纯蠢贤鈱懙倪@篇文章:Waiting for Windows Azure Tokens? seems many are in the same boat .. 

  所以,填寫資料的時(shí)候一定要認(rèn)真……如果有不明白直接給Sriram Krishnan 發(fā)郵件,他自稱"I work for the Windows Azure team and I'm the token/invitation master in sorts”,我拿到token之前就騷擾過他……(sriramk@microsoft.com)

  然后,你需要下載以下官方學(xué)習(xí)資源:

  官方的資料比較多,以下兩個(gè)最重要。

  Introducing the Azure™ Services Platform:這是一個(gè)30多頁的pdf文件,對Azure進(jìn)行了全面的介紹(不涉及技術(shù))。

  Azure Services Training Kit - PDC Preview:這是官方的教程,色香味俱全。也是目前能夠找到的唯一教程。(我google幾天了,目前真的沒有其他第3方教程了。)

接下來,當(dāng)然是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個(gè)部分,都有不同的SDK和工具。其中只有Windows Azure稍微特殊一點(diǎn),需要Vista或windows2008操作系統(tǒng)。

  Then,開發(fā):

  Azure的開發(fā)過程與普通.NET的開發(fā)過程沒啥區(qū)別:

  使用Visual Studio開發(fā) - 開發(fā)中使用Azure的各種服務(wù) - 發(fā)布- 登陸dev portal部署到“云”里

  以后我慢慢講。
 
在上一篇里我已經(jīng)提過了,有了SQL Services,作為一般的中小型應(yīng)用程序開發(fā),你完全可以忘掉SQL Server 200X的存在。有這么神奇嗎?現(xiàn)在流牛木馬就來詳細(xì)地了解SQL Services是何方神圣。

  在大多數(shù)情況下,Web應(yīng)用程序都需要依賴另一個(gè)數(shù)據(jù)庫服務(wù)器。這個(gè)數(shù)據(jù)庫服務(wù)需要專業(yè)的IT人士來維護(hù)。在你部署應(yīng)用程序之前,你需要考慮太多:這個(gè)數(shù)據(jù)服務(wù)器有足夠的容量么?性能怎么樣?穩(wěn)定和安全?負(fù)載?還有其他太多太多未知的因素…

  按照云計(jì)算的基本概念,解決以上問題,我們需要Cloud-based data platform,即把數(shù)據(jù)服務(wù)都放在云端,依靠強(qiáng)大的云端操作系統(tǒng)和平臺硬件來處理。對了。SQL Data Services(SDS)就是這樣一種基于"云"的數(shù)據(jù)平臺。

  什么是SDS?

  SDS是一個(gè)面向internet的強(qiáng)大database,提供強(qiáng)壯、安全、靈活數(shù)據(jù)庫服務(wù)。SDS提供SOAP和REST兩種標(biāo)準(zhǔn)接口,與傳統(tǒng)編程語言脫離,讓使用任何語言的coder都可以輕易地操作它。

  為什么要使用SDS?

  Flexibility and scale,Business-ready reliability and security,Developer agility

  SDS在Azure Services Platform中的地位:

  SDS是Azure四大模塊之一,在云端為天上地下的應(yīng)用程序提供數(shù)據(jù)服務(wù),也為其他的Azure Services模塊提供數(shù)據(jù)服務(wù)。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  SDS支持的數(shù)據(jù)類型

  SDS支持 String(字符串), Decimal(十進(jìn)制數(shù)), Boolean, DateTime, and Binary 幾種基本的數(shù)據(jù)類型,還支持一種叫BLOB(binary large object )數(shù)據(jù)類型,允許你存儲任何格式的內(nèi)容。

  申請地址:

  http://go.microsoft.com/?linkid=9373222

  Dev Portal

  http://portal.ex.azure.microsoft.com

  ACE模型

  終于進(jìn)入重點(diǎn)了。在使用SDS之前,你必須了解SDS的ACE(Authority,Container,Entity)模型。Authority是最高level的對象。一個(gè)Authority包含了多個(gè)Container,一個(gè)Container包含多個(gè)Entity.如下圖

  我們可以把Authoriy想象成SQL Server中一個(gè)數(shù)據(jù)庫實(shí)例(SQL Server instance)。那么,Container就好比實(shí)例中的多個(gè)相互獨(dú)立的數(shù)據(jù)庫了。而Entity就相當(dāng)于一條記錄。這樣類比只是一個(gè)直觀的概念,其實(shí)ACE模型和關(guān)系數(shù)據(jù)庫是有區(qū)別的。

  如果要準(zhǔn)確類比的話,Container可以等同于關(guān)系數(shù)據(jù)庫中的一個(gè)獨(dú)立database,也可以等同于一個(gè)table。Entity是一條數(shù)據(jù)記錄沒錯(cuò),但是Entity的是任意的,不需要像關(guān)系數(shù)據(jù)庫里那樣,在一個(gè)table里有一個(gè)特定的結(jié)構(gòu)定義。大家看上圖可以注意到,一個(gè)Container可以包含多種結(jié)構(gòu)不同的Entity。

  舉個(gè)實(shí)際例子,如上圖所示,我們可以創(chuàng)建一個(gè)叫做"food"的Authority,其下包括名為"fruit"和"vegetable"兩個(gè)Container.  Container["fruit"]中包括3個(gè)實(shí)體,分別是"apple1","apple2","pear1".注意,這里我們假設(shè)五角星代表pear,三角形代表apple。這樣,在這個(gè)  Container["fruit"]就包括了兩種類型的三個(gè)Entity。同樣,在Container["vegetable"]中,我們假設(shè)圓形是白菜cabbage,方形是西紅柿tomato,我們又有了"tomato1","tomato2" ,"cabbage1"三個(gè)entity,它們也屬于兩種不同類型。。

  呵呵,根傳統(tǒng)的instance-database-tabale-row的模型很不一樣吧?不要緊,現(xiàn)在先記住基本的結(jié)構(gòu)就好了,在下一節(jié),你會有機(jī)會動手把玩一下它們。

  編程模型

  每個(gè)Authority都對應(yīng)特定的URI。比如一個(gè)叫做food的Authority,它的HTTP地址就是https://food.data.database.windows.net/v1 ,可以直接在瀏覽器中打開(在瀏覽器zhogn1直接打開,等同于執(zhí)行HTTP的GET方法)

  有了Authority的URI,你會發(fā)現(xiàn),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操作。下表是一個(gè)HTTP Verb到SDS Operation的映射

HTTP Verb SDS Operation
GET  Fetch,Query,(即Select)
POST Create,(即Insert)
PUT Update
DELETE Delete

 

  好了,這一節(jié)到此結(jié)束。:) 下一節(jié)我會通過一個(gè)小工具來玩轉(zhuǎn)SDS的全部功能。
 
SDS其實(shí)是很友善、很好玩的。這一節(jié)我們不會使用任何的編程語言, 流牛木馬將帶領(lǐng)大家,僅靠SDK里的一個(gè)叫做SSDS Explorer小工具來玩轉(zhuǎn)SDS,熟悉和實(shí)現(xiàn)上一篇講述的一些內(nèi)容。很有趣的哦~

  在申請Azure后,經(jīng)過耐心漫長地等待,你會收到一封叫做“Do Not Delete! Invitation Code to Microsoft .NET Services and Microsoft SQL Services”的郵件。

  終于開始了!從郵件中復(fù)制出Invitation Code,打開http://portal.ex.azure.microsoft.com/,激活你的SDS

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。 

  激活后,點(diǎn)擊右上角的Get Started

  進(jìn)入SDS,然后創(chuàng)建一個(gè)新的Solution。注意:一個(gè)invitation code只能創(chuàng)建一個(gè)Solution.

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

 

  點(diǎn)擊頂部的Solution Credentials,修改solution的密碼。改成一個(gè)自己好記的吧:)

 

  好了,現(xiàn)在你已經(jīng)有了自己好記的Solution名和密碼了。

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

  安裝SDK.

  打開安裝目錄下的SSDS Explorer

 

  在這里我們先復(fù)習(xí)一下上一篇講的ACE模型。

 

  我們的操作順序也是根據(jù)這一模型來的。

  首先要建立一個(gè)Authority,然后在它下面建立不同的Container,最后再在Container下建立多個(gè)同類型或者不同類型的Entity。

  還是上一篇的例子,與上圖對照,我們可以創(chuàng)建一個(gè)叫做"food"的Authority,其下包括名為"fruit"和"vegetable"兩個(gè)Container.  Container["fruit"]中包括3個(gè)實(shí)體,分別是"apple1","apple2","pear1".注意,這里我們假設(shè)五角星代表pear,三角形代表apple。這樣,在這個(gè)  Container["fruit"]就包括了兩種類型的三個(gè)Entity。同樣,在Container["vegetable"]中,我們假設(shè)圓形是白菜cabbage,方形是西紅柿tomato,我們又有了"tomato1","tomato2" ,"cabbage1"三個(gè)entity,它們也屬于兩種不同類型。。

  接著我們在復(fù)習(xí)一下基本操作與HTTP Verb的映射表

HTTP Verb SDS Operation
GET Fetch,Query 查詢
POST Create  新建
PUT Update 修改
DELETE Delete  刪除

  好了,夠了,開工!進(jìn)入SSDE Explorer??!

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  第一步當(dāng)然是創(chuàng)建Authority.直接點(diǎn)擊右邊的

按鈕

  此時(shí)文本框里會出現(xiàn)這樣一段

  在<s:Id>與</s:Id>中間輸入Authority的名字,我這了就叫做food了。輸入完成后點(diǎn)擊

(因?yàn)楦鶕?jù)上面的映射表,“新建”操作對應(yīng)的HTTP Verb是"POST")

  此時(shí)可能會彈出Credentials對話框,輸入剛剛設(shè)置的Solution名字和密碼即可。

  如果操作成功,底部的狀態(tài)框會出現(xiàn)

。如果出現(xiàn)的是
,說明操作有誤,請根據(jù)錯(cuò)誤提示進(jìn)行更改。

  操作成功后,頂部的地址欄會變成

  對了,這就是這個(gè)Authority的URI了。上一篇里說了,對這個(gè)Authority的所有操作,其實(shí)就是對這個(gè)URI的HTTP操作。

  現(xiàn)在我們來建立兩個(gè)叫做"fruit"和"vegetable"的Container

  點(diǎn)擊

,在<s:Id>和</s:Id>中輸入"fruit",此時(shí)文本框如下圖

  點(diǎn)擊

,狀態(tài)欄變成
。

  地址欄里顯示的URI是

  現(xiàn)在就是在fruit中加入具體的Entity了。(vegetable類似,略)。

  我們假設(shè)fruit中有兩種Entity,

  一種是Apple,包括的屬性如下:

屬性名 Weight Color Availability RecordDate
類型 Decimal String Boolean DateTime

  另一種是Pear,包括的屬性如下

屬性名 Weight IsPopular ProducingArea
類型 Decimal Boolean String

  現(xiàn)在我們來添加第一個(gè)Apple: "apple1"

  由于我們是要在fruit這個(gè)container中插入Entity,所以操作時(shí)請保持URI為https://food.data.database.windows.net/v1/fruit

  點(diǎn)擊右邊的

  將默認(rèn)的<Entity />標(biāo)簽對的名字改為<Apple />

  在<s:Id/>標(biāo)簽對中輸入"apple1"

  點(diǎn)擊右邊的屬性區(qū),依次添加屬性。屬性名就是節(jié)點(diǎn)標(biāo)簽名字,請注意更改。

  描述屬性的節(jié)點(diǎn)內(nèi)有一個(gè)叫做"xsi:type"的attribute,表示當(dāng)前節(jié)點(diǎn)的類型。

  如<Weight xsi:type="x:decimal">1.2</Weight >,定義了一個(gè)叫做Weight的String屬性,它的值是1.2。

  apple1的最終外觀如下:

  同樣的方法我們可以添加apple2

 

  再添加Pear類型的pear1

 

  呵呵,這樣就添加完了。如果這個(gè)時(shí)候我想修改 apple1呢?只需要在地址欄中輸入https://food.data.database.windows.net/v1/fruit/apple1,點(diǎn)擊

,修改好后再點(diǎn)擊
即可。(PUT對應(yīng)UPDATE操作) 刪除呢?呵,一個(gè)碩大的
出現(xiàn)在底部,就不用我說了吧?

  接下來我們就可以使用LINQ來玩弄它了!

  基本語法如下

  from e in entities [where condition] order by [property] select e

  運(yùn)算符和布爾操作符

 

  比如,我們現(xiàn)在可以在地址欄中輸入https://food.data.database.windows.net/v1/

  在查詢框中輸入from e in entities where e.Id=="fruit" select e,點(diǎn)擊

  此時(shí)文本框中就會出現(xiàn)fruit這個(gè)Container的內(nèi)容。簡單吧?

  讓我們循序漸進(jìn):

  地址欄輸入https://food.data.database.windows.net/v1/fruit

  查詢框輸入from e in entities where e.Kind=="Apple" select e,點(diǎn)擊

,此時(shí)文本框中就會展示出apple1和apple2的內(nèi)容。

  再來。

  執(zhí)行查詢from e in entities where e.Kind=="Apple" && e["Color"]=="Red" select e

  則只能看到apple2的內(nèi)容,因?yàn)橹挥衋pple2的"Color"等于"Red"

  讀者走到這里可能有疑問了。為什么是e.Kind和e["Color"]呢?到底是用"."還是用"[]"呢?解釋一下,對于Entity的元數(shù)據(jù)屬性(metadata property),需要使用".",如e.Id,e.Kind;對于普通屬性,則使用"[]",如e["Color"]

  讀者可以繼續(xù)練習(xí)更多:

  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 (使用表達(dá)式)

  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 (字符串使用比較符號)

  注意: 同一個(gè)Kind的Entity可以包含的不同的屬性(不推薦)。比如我們可以把a(bǔ)pple1中的<Availability />屬性刪除掉,完全沒有影響。可以執(zhí)行以下查詢進(jìn)行測試

  from e in entities where e["Availability"]==false  && e.Kind=="Apple" select e

  怎么樣?很簡單很有趣吧?

  “赤手空拳”與SDS“肉搏"到此為止。在下一篇中,我們將使用C#語言,對以上所有的操作進(jìn)行編程實(shí)現(xiàn),敬請關(guān)注。
 
在上一篇中,我們通過SSDS Explorer詳細(xì)了解了SDS的工作和操作流程。

  這一篇,我們會詳細(xì)講解如何使用程序員的方法來操作SDS。

  SDS提供SOAP和REST兩種接口,這里我們是用REST+C#的方法來講解。SOAP與之殊途同歸,請有興趣的同學(xué)自己查閱MSDN。

  閑話少說,下面我們以創(chuàng)建Authority為例,給出REST操作SDS的“萬能框架”:

public   string  CreateAuthority()
       {
           //步驟一(藍(lán)色部分):通過某種方式,構(gòu)造要發(fā)送到服務(wù)的XML數(shù)據(jù)。顯然,這一部分只有在POST方法和PUT方法時(shí)才會有,對于GET方法和DELETE方法則不需要。下面示例的是一個(gè)創(chuàng)建Authority的XML
           const string AuthorityTemplate =
                     @"<s:Authority xmlns:s='http://schemas.microsoft.com/sitka/2008/03/'>
                       <s:Id>{0}</s:Id>
                     </s:Authority>";

           if (String.IsNullOrEmpty(ServiceUri))
           {
               throw new ArgumentOutOfRangeException("ServiceUri");
           }

           string authorityUri = null;
           try
           {
               string requestPayload = string.Format(AuthorityTemplate, authorityId);
              //步驟二:建立用以傳送數(shù)據(jù)的HttpWebRequest對象
              HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServiceUri);
              //步驟三:將用戶名和密碼放置在HttpWebRequest對象的Credentials中
               request.Credentials = new NetworkCredential(userName, password);

              //步驟四(:設(shè)置Http方法。HTTP方法與數(shù)據(jù)操作方法的對照: POST=create; PUT=update; DELETE=delete; GET=retrieve 。在這個(gè)例子中,我們需要create,所以選擇POST方法。
               request.Method = "POST";

             //步驟五(藍(lán)色部分):傳送數(shù)據(jù)到服務(wù)器。顯然,這一部分只有在POST方法和PUT方法時(shí)才會有,對于GET方法和DELETE方法則不需要。

               UTF8Encoding encoding = new UTF8Encoding();
               request.ContentLength = encoding.GetByteCount(requestPayload);
               request.ContentType = XmlContentType;

               // 傳送數(shù)據(jù)
               using (Stream reqStm = request.GetRequestStream())
               {
                   reqStm.Write(encoding.GetBytes(requestPayload), 0, encoding.GetByteCount(requestPayload));
               }             
          //步驟六 :獲取服務(wù)器響應(yīng),根據(jù)服務(wù)器的相應(yīng)獲取操作結(jié)果   
       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;
       }

很簡單吧? 所有的操作與這個(gè)“萬能框架”相似。例如,我們稍微做一些改動,就可以得到下面這樣一個(gè)刪除Entity的函數(shù):

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的操作和"萬能框架"中Create的方法基本雷同,唯一區(qū)別是在步驟4的地方,將"POST"改為"PUT"。比如以下這個(gè)函數(shù):

  讀取數(shù)據(jù)就不用說了吧?呵呵。。那太容易了,就連把URI直接輸入瀏覽器都可以。不過作為編程來說,其實(shí)就是在上面給出的DeleteEntity()函數(shù)的代碼中,步驟四的HTTP方法由DELETE改為GET,再大到HttpWebResponse 中去獲取你想要獲取的內(nèi)容。

  至此,數(shù)據(jù)庫的四種操作(CRUD,Create,Read,Update,Delete)我們都已經(jīng)講過了。對,就是這么容易。

  由于時(shí)間關(guān)系,我只在附件內(nèi)寫出了Authority,Container,Entity三種結(jié)構(gòu)的Create操作。相信讀者看完這篇文章后,自己改寫成其他操作并非難事。

  我正把SDS應(yīng)用到我目前的項(xiàng)目之中。如果大家有興趣的話,我爭取過段時(shí)間提取一部分功能,做成Demo供大家參考。
 
在云端運(yùn)行應(yīng)用程序、存儲和處理數(shù)據(jù)只是云計(jì)算的一部分。我們還想搭建云端服務(wù)(cloud-based services)。云端服務(wù)當(dāng)然和普通的服務(wù)不同了,需要更多的管理和約束。.NET Services就是為填平這一空白存在的。例如,當(dāng)今熱門的"分布式應(yīng)用程序",如果使用到.NET Services提供的一些功能,就會變得很容易。本節(jié)主要從Overview的角度來介紹.NET Service。

   .NET Services在Azure Services Platform中的位置如下圖所示。

  

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   .NET Services首先是Services,我們可以在portal里對它們進(jìn)行配置和管理,同時(shí)在程序里使用他。另外,和SQL Services一樣,.NET Services不僅可以被云端程序使用,普通的應(yīng)用程序也可以使用它。

   .NET Services包括三個(gè)部分:Access Control,Service Bus,Workflow。在接下來的幾節(jié)中我們會介紹。本節(jié)只做概要介紹。

   Access Control :隨著應(yīng)用程序越來越復(fù)雜,角色越來越多,控制用戶的access權(quán)限變得很重要。不僅單純是網(wǎng)站頁面的瀏覽權(quán)限問題,在各種服務(wù)中也需要,比如WCF服務(wù)。主流的解決反感是讓用戶提供token,應(yīng)用程序根據(jù)token去判斷權(quán)限。Access Control就是提供這樣一種服務(wù)。她規(guī)定了自己的一種基于token規(guī)則。配置用戶權(quán)限、識別token判斷用戶權(quán)限這些事再也不需要程序員自己來做了!Access Control會幫你完成得很好!

   Service Bus:  這個(gè)功能太好解釋了。"Service Bus",顧名思義,就是把"Service"放在"Bus"里。事實(shí)也是這樣,Service Bus就是把Web Service的EndPoint封裝在一起,方便客戶段使用者發(fā)現(xiàn)可以使用的Web Service,這就是Service Bus的主要功能。此外,Service Bus還有一牛x功能:網(wǎng)絡(luò)地址轉(zhuǎn)換和穿防火墻——以后有機(jī)會再慢慢說。

   Workflow :Workflow相信很多做.net開發(fā)的朋友已經(jīng)再熟悉不過了。.NET Services提供的Workflow服務(wù)很容易理解:就是把平時(shí)大家用的本地WF邏輯運(yùn)行在云端。這倒是一個(gè)非常實(shí)用的服務(wù)。

   清楚了吧?呵呵,其實(shí)Azure這一整套平臺提供的都是"思想大于技術(shù)"的東西,不增加程序的負(fù)擔(dān),讓開發(fā)者使用已有的技術(shù)體驗(yàn)到云計(jì)算帶來的好處。

   在接下來的幾節(jié),我們還會通過講解SDK里Samples的方式來帶領(lǐng)大家快速了解.NET Services的各個(gè)部分,都非常容易,短時(shí)間內(nèi)就可以掌握。
 
本節(jié)通過簡短的語言講解Microsoft .NET Services (Dec 2008 CTP) SDK里的實(shí)例,向大家展示Service Bus的入門知識。

   沒有安裝Microsoft .NET Services (Dec 2008 CTP) SDK的朋友直接直接下載本文附件使用。

  使用實(shí)例:

   首先,打開Microsoft .NET Services (Dec 2008 CTP) SDKSamplesServiceBusGettingStartedEchoCS35 目錄下的Visual Studio解決方案EchoSample.sln

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   在Service項(xiàng)目上點(diǎn)擊右鍵,啟用新實(shí)例。

   輸入方案的用戶名和密碼。(在http://portal.ex.azure.microsoft.com中設(shè)置的)驗(yàn)證成功后控制臺會給出一個(gè)類似"sb://servicebus.windows.net/services/sixsix/EchoService”的URI。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

然后再啟用一個(gè)客戶端(Client)的調(diào)試實(shí)例。同樣要求輸入Solution名和密碼。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   此時(shí)客戶端已經(jīng)已經(jīng)連上服務(wù)端的服務(wù)了。

   相信大家通過解決方案名都已經(jīng)知道這個(gè)服務(wù)的作用了,很簡單,就是客戶段輸入字符串到服務(wù)端,服務(wù)端向客戶端傳回同樣的字符串。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  通過實(shí)例看Service Bus有啥用:

   顯然,這個(gè)實(shí)例中使用的服務(wù)是網(wǎng)絡(luò)編程中最基礎(chǔ)的Echo服務(wù)。我們使用了Username/Password的驗(yàn)證方式。

   讀者可以嘗試關(guān)掉服務(wù)端。你會發(fā)現(xiàn),客戶端沒有任何變化,只是不能再調(diào)用服務(wù),不能得到echo而已。這說明Service Bus其實(shí)起了一個(gè)橋接作用。服務(wù)端程序無論運(yùn)行在怎樣的網(wǎng)絡(luò)環(huán)境下,無論是在NAT之內(nèi)還是公共環(huán)境,也不在乎這個(gè)服務(wù)的IP如何更改,甚至服務(wù)處于防火墻后面,客戶端對其的定位依賴于Service Bus提供的統(tǒng)一URI,Service Bus為服務(wù)提供了注冊與地址解析。在本例中,Echo服務(wù)的地址始終是"sb://servicebus.windows.net/services/sixsix/EchoService/”,該服務(wù)的實(shí)際網(wǎng)絡(luò)環(huán)境和地理位置,對客戶機(jī)是完全透明的。這是上一節(jié)提到的,Service Bus的一個(gè)實(shí)用的牛X功能。

   另外,此時(shí)如果你打開http://servicebus.windows.net/services/{your solution name}/,可以看到Service Bus把你Solution下的都以Atom 1.0 Feed的格式裝在了"Bus"中(只顯示當(dāng)前可以使用的服務(wù),也就是說,如果你關(guān)掉了服務(wù)端程序,就不會看到內(nèi)容)。下面截圖了顯示了http://servicebus.windows.net/services/sixsix/ 。"sixsix"是我的Solution名。目前這個(gè)Solution下只有1個(gè)echoservice。

  

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  明白Service Bus的使用方法和目的后,編程操作是很容易的。請自行查看代碼。
 
最近有朋友問我:Windows Azure是不是一個(gè)微軟官方提供的ASP.NET應(yīng)用程序虛擬主機(jī)?

  他的具體理解是這樣的:Windows Azure提供了對ASP.NET應(yīng)用程序的托管,并且,“云計(jì)算”離我們那么近,只要把ASP.NET應(yīng)用程序部署到Window Azure 上,以前的ASP.NET應(yīng)用程序就變成“云應(yīng)用”了!

  怎么說好呢?這種理解完全是受當(dāng)今社會混亂的.NET虛擬主機(jī)市場逼出來的。Windows Azure作為Azure Services Platform的一號服務(wù),如果你僅僅只用他來存放你已經(jīng)過時(shí)的ASP.NET應(yīng)用程序,那簡直是殺雞用牛刀、暴殄天物。

  那么,Windows Azure應(yīng)該怎么用?它到底比一般的虛擬主機(jī)牛在哪兒?那還的從Windows Azure的服務(wù)架構(gòu)說起。

  Roles(角色):

  先說說角色問題吧,非常重要。不理解Windows Azure關(guān)于Role的概念,是沒辦法懂得微軟煞費(fèi)苦心的”云”的。

  部署到Windows Azure上的程序扮演著以下兩種角色:Web Role和Worker Role。

   Web Role:顧名思義,就是提供Web服務(wù)的角色。簡單地說,Web Role就是ASP.NET Applicantion,是你本地ASP.NET Application的云端版本!支持HTTP/HTTPS協(xié)議,還能提供WCF服務(wù)。

   Worker Role:在后臺運(yùn)行的應(yīng)用程序。它可以在后臺訪問任何網(wǎng)絡(luò)資源、數(shù)據(jù)源并進(jìn)行操作。它從來不在大庭廣眾前露面(不開放外部訪問接口),它接到命令后會毫無怨言地依次執(zhí)行(Queue service里的消息隊(duì)列能引導(dǎo)它的工作),它就像一個(gè)默默無聞的無私奉獻(xiàn)者??梢阅肳indows系統(tǒng)服務(wù)跟它類比,一旦啟動,一直在后臺運(yùn)行。很爽吧? 這個(gè)功能值得重視,大伙們看清楚了,這可是一般的虛擬主機(jī)無法提供的哦~ 就連Google引以為豪的云平臺Google App Engine,至今已經(jīng)更新了許多許多次,也從來沒有考慮過讓一段程序在后臺長期運(yùn)行!

這個(gè)Workder Role頗具有“云”的概念:一直在云端悄悄運(yùn)行,地面上的人看不到它,但卻不能沒有它。

   所以,“云計(jì)算”并不是說只要你把“計(jì)算”放在“云”上就可以,而且徹底地讓“計(jì)算”在“云”上運(yùn)行。它包括以下幾層含義:在云上——不需要本地服務(wù)器;云很大——計(jì)算量可以很大;無論在哪里,一抬頭就是云——云平臺上的應(yīng)用無論在哪里、使用何種設(shè)備都能使用;躲在云里——它的計(jì)算過程無論有多復(fù)雜,地面上的使用者不需要看到它。

  Role的附件

   Web Role和Worker Role這兩個(gè)小朋友也是帶了家屬一起加入到Windows Azure這個(gè)大家庭的,它們暫時(shí)包括:

  把Local Storage作為緩存使用

  標(biāo)準(zhǔn)的Event Streams記錄日志、發(fā)出警告

  健康報(bào)告

   呵呵,這些也是普通的虛擬主機(jī)無法有的吧? “云主機(jī)”的功能是非常強(qiáng)大的,配套是非常完善的!

  服務(wù)定義(Service Definition)

   程序生活在Windows Azure這個(gè)新環(huán)境里往往會感到納悶,會懷疑人生:我到底是Web Role還是Worker Role呢?

   這就需要我們來幫助它們了。

   Windows Azure使用了一類后綴.csdef的文件來定義服務(wù)。包括:這個(gè)服務(wù)到底似乎Web Role還是Worker Role?使用HTTp還是HTTPS ? 哪里去找Local Storage這個(gè)親家來幫忙?諸如此類的信息。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  服務(wù)配置(Service Configuration)

   Web Role和Worder Role這兩個(gè)小朋友在得到關(guān)于職業(yè)規(guī)劃的答復(fù)后,又產(chǎn)生了對職業(yè)生涯方面的疑問:具體應(yīng)該怎么做呢?

   這就需要用到服務(wù)配置了。顧名思義,就是對具體服務(wù)的具體配置了。我們采用.cscfg為后綴的文件來保存它們。它擔(dān)當(dāng)著與ASP.NET中的Web.Config文件類似的任務(wù),且任務(wù)更重?!   ?/p>

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   好了,說了這么多,相信讀者已經(jīng)對Window Azure的服務(wù)架構(gòu)有了一個(gè)清晰的了解了。千萬不要再把Windows Azure當(dāng)作一般的.NET虛擬主機(jī)來使了哦~微軟知道后會很受傷的!
 
相信大家看完本套教程前7篇后,已經(jīng)對Azure Services Platform已經(jīng)有了一個(gè)比較全面的了解。現(xiàn)在我們一起動動手,以最最簡單的留言板為例,使用Azure Services Platform中的的Windows Azure作為主機(jī)、SQL Data Services作為數(shù)據(jù)存儲,來了解開發(fā)、部署Azure應(yīng)用程序的全過程。

  如果您的準(zhǔn)備只是還不夠充分,請先選擇性地快速瀏覽以下幾篇文章:

  【準(zhǔn)備知識0】INTRODUCING THE AZURE SERVICES PLATFORM

  【準(zhǔn)備知識1】忘掉SQL Server 200X——Introducing SQL Data Services(SDS)

  【準(zhǔn)備知識2】別把Windows Azure當(dāng)虛擬主機(jī)使—理解Windows Azure服務(wù)架構(gòu)

  【準(zhǔn)備知識3】赤手空拳玩轉(zhuǎn) SQL Data Services(SDS)

  【準(zhǔn)備知識4】SQL Data Services 編程基礎(chǔ)

  最終效果圖如下:(也可通過http://ibm.cloudapp.net查看網(wǎng)絡(luò)版本)

  開發(fā)過程:

  1.啟動本機(jī)Windows Azure SDK里的Development Fabric,打開本機(jī)的調(diào)試運(yùn)行環(huán)境。

  2.打開VS2008,新建Visual C# – Cloud Service – Web Cloud Service項(xiàng)目。本例非常簡單,只需要使用Web Role。

  關(guān)于Web Role和Worker Role的區(qū)別于聯(lián)系,請參考【準(zhǔn)備知識2】。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  新建項(xiàng)目后,解決方案中將出現(xiàn)GuestBook和GuestBook_WebRole兩個(gè)項(xiàng)目。其中GuestBook是關(guān)于Roles的配置文件,在本例中可以不去理會它。本例主要操作的是GuestBook_WebRole項(xiàng)目,即一個(gè)ASP.NET網(wǎng)站項(xiàng)目。

 

  3.打開SQL Data Services SDK里的SDS Explorer。配置好用戶名、密碼;新建Authority和Container。 具體操作過程請參考【準(zhǔn)備知識3】。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  4.在這里,我們新建了名叫“guestbook”的Authority和一個(gè)叫做“1st”的Container?,F(xiàn)在我們將它們配置到GuestBook_WebRole項(xiàng)目的web.config文件里面,以便程序讀取。

  5.在GuestBook_WebRole中新建CloudDataHelper類。里面寫入對SQL Data Service的一些基本操作。詳細(xì)代碼見附件。

  以下是讀取配置文件和存儲數(shù)據(jù)的函數(shù)示例。

  6.在Default.aspx頁中拖入幾個(gè)控件和簡單的邏輯代碼。呵呵,這就不用我教了吧?詳細(xì)內(nèi)容同樣包含在附件里。

  7.F5進(jìn)行Debug運(yùn)行。如果運(yùn)行成功的話,首頁會出現(xiàn)在你的面前——就像調(diào)試傳統(tǒng)的ASP.NET Web Application一樣。同時(shí),在Development Fabric里會出現(xiàn)一些相關(guān)的信息。

  8.如果你已經(jīng)對Debug的效果滿意,那么就需要將我們的第一個(gè)“云端應(yīng)用”部署到“云”上面去咯~

   在GuestBook項(xiàng)目上單擊右鍵,選擇Publish(發(fā)布)

  如果發(fā)布成功,此時(shí)VS會彈出兩個(gè)框在你面前:

  包含發(fā)布文件的文件夾和Azure Services Developer Portal(需用LiveID登錄)

 

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。 

  9.在Azure Services Developer Portal里新建“Windows Azure”-“Hosted Services”項(xiàng)目。填寫一些簡單的信息。

  如果你有關(guān)于Azure Services Developer Portal的疑問,請參考【準(zhǔn)備知識0】.

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  10.介紹一下Hosted Service的主界面吧:如下圖。每個(gè)Host在Windows Azure上的應(yīng)用程序包括兩種狀態(tài)(或者理解為兩個(gè)不同的部署平臺):Production和Staging. 簡單地說,Production是正式部署的地方,Staging是放內(nèi)部測試部署的備份服務(wù)器。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  11.我們先把我們的應(yīng)用程序部署到Staging服務(wù)器上。點(diǎn)擊上圖中的Deploy按鈕,進(jìn)入以下界面。根據(jù)提示上傳剛才Publish時(shí)生成的兩個(gè)文件。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  12.在Staging服務(wù)器上Deploy成功后,點(diǎn)擊下圖中間的圓圈,將Staging服務(wù)器上的內(nèi)容交換到Production服務(wù)器上,并點(diǎn)擊”Run”按鈕。注意:這兩個(gè)過程都需要較長的等待。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  13.如果部署成功,你會看到類似下圖的界面。當(dāng)“WebRole”標(biāo)識下出現(xiàn)綠色的小勾并帶有”Started”字樣,說明此時(shí)你已經(jīng)可以在網(wǎng)絡(luò)上訪問你的“云應(yīng)用程序”了。如http://ibm.cloudapp.net
 
在本系列的第一篇【Azure Services Platform Step by Step-第1篇】INTRODUCING THE AZURE SERVICES PLATFORM里就介紹過了,Azure Services Platform包括4個(gè)部分。其中,Windows Azure是支撐整個(gè)微軟云平臺(Azure Services Platform)的基礎(chǔ)。換句話說,Windows Azure是“云平臺的操作系統(tǒng)”,它提供了云平臺最基本、最重要的服務(wù)。

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

  Windows Azure由兩個(gè)重要部分構(gòu)成:

  虛擬化計(jì)算服務(wù)(提供基于VM主機(jī)。在上一篇里已經(jīng)示范過它。)

  各種數(shù)據(jù)存儲服務(wù)。即本文要介紹的Windows Azure Storage。

  Windows Azure Storage可以讓程序員存儲他們想存儲的任何數(shù)據(jù)。按照“云計(jì)算”的概念,數(shù)據(jù)一旦存儲到“云”中,就永遠(yuǎn)不會丟失,程序員可以在任何時(shí)候、從任何終端和任何地方獲取任意大小的數(shù)據(jù)。Windows Azure Storage正是繼續(xù)遵循這一思想。

  Windows Azure Storage由三個(gè)重要部分構(gòu)成:

  Windows Azure Blob:存儲大型數(shù)據(jù)

  Windows Azure Table:存儲表數(shù)據(jù)。類似關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)表,但不同。

  Windows Azure Queue:為異步工作提供分派消息服務(wù)。有點(diǎn)類似Windows系統(tǒng)自身的消息隊(duì)列。

  接下來我們來以此介紹這3個(gè)數(shù)據(jù)服務(wù)。

  Windows Azure Blob

   剛才說過了,這個(gè)牛X的服務(wù),就是用來存儲大型的數(shù)據(jù)的。怎么樣的數(shù)據(jù)算大型呢?文件!不知道你是否和筆者一樣,剛看到這個(gè)服務(wù)時(shí)第一個(gè)反應(yīng)就是:用它來做網(wǎng)絡(luò)硬盤。: )

   Windows Azure Blob的數(shù)據(jù)模型非常簡單,看一眼就不會忘記。我們真的大可以把它想象成云端的一個(gè)無限大的硬盤。它的結(jié)構(gòu)如下圖:

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   大家先別看“Block”部分。很一目了然吧? 一起繼續(xù)YY:  如果Account是那塊硬盤,Container就代表不同分區(qū)(可惜分區(qū)里沒有文件夾概念),Blob就是分區(qū)根目錄里不同的文件。那么上圖的意思是:在我的那塊叫做"sally”的硬盤里,有"pictures”和"movies”兩個(gè)分區(qū),"pictures”分區(qū)根目錄里有"IMG001.JPG “”IMG002.JPG”這兩個(gè)文件。

   這塊云端的無限大硬盤在哪里呢?怎樣才能找到它?也很簡單,它仍然采用Azure的管理,使用REST的方式操作它。地址是:

   http://<account>.blob.core.windows.net/<container>/<blobname>

   例如:http://maheshwar.blob.core.windows.net/livesearchimages/AcacusDesert_EN-US1025081982.jpg (這是一張圖片,點(diǎn)擊鏈接可直接訪問)

   現(xiàn)在可以繼續(xù)解釋上圖中的“Block”了。既然是采用REST的方式,就是通過HTTP的方式,那么真正很大很大的文件,比如1G的電影,要直接傳上去顯然是一件非常困難的事。Block就是為解決這個(gè)問題而存在的。只要你心情好,你大可以把這個(gè)電影分割成1000個(gè)1M的Block來上傳。Block對下載流程是透明的,下載者根本不知道也不用去知道它正在下載的文件被分成了多少個(gè)block。

(事實(shí)上筆者真的用它做自用的網(wǎng)絡(luò)硬盤,從開發(fā)和使用角度來說都非常方便,以后有機(jī)會我整理一下代碼與大家分享一下)。

  Windows Azure Table

   這個(gè)服務(wù)是很多人心中的最愛。

   正在使用VS200X來開發(fā)簡單ASP.NET應(yīng)用程序的時(shí)候,你會許和很多人一樣有以下兩個(gè)重要習(xí)慣:使用關(guān)系數(shù)據(jù)庫(如SQL Server);數(shù)據(jù)庫中的某些表直接對應(yīng)程序里的實(shí)體類。你或許會使用代碼生成工具,ORM工具,或者自己寫三層架構(gòu)來完成關(guān)系數(shù)據(jù)庫to對象的映射。發(fā)現(xiàn)沒,此時(shí)的你是多么希望能夠直接將實(shí)體存入數(shù)據(jù)庫當(dāng)中啊!

   Windows Azure Table服務(wù)就是用來解決這個(gè)問題的。它可以直接將實(shí)體類、實(shí)體對象存入表格結(jié)構(gòu)當(dāng)中。它讓太多的人感到欣喜。

   它比較類似傳統(tǒng)關(guān)系數(shù)據(jù)庫當(dāng)中的表格,但是又有很大不同。先看下圖的結(jié)構(gòu):

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

   與你想的一樣,它支持LINQ, REST。HTTP地址是      http://<account>.table.core.windows.net

   這部分內(nèi)容比較多,過幾天我會單獨(dú)使用一節(jié)的內(nèi)容來做一個(gè)簡單Demo講解它的使用。

 

  Windows Azure Queue

   Windows Azure Queue因?yàn)閃indows Azure的服務(wù)架構(gòu)而存在——這個(gè)一個(gè)需要消息隊(duì)列的架構(gòu)。

   我們在《【Azure Services Platform Step by Step-第7篇】別把Windows Azure當(dāng)虛擬主機(jī)使——理解Windows Azure服務(wù)架構(gòu)》里了解過,Windows Azure VM中是如何引入了Web Role和Worker Role這一非常創(chuàng)新的概念,從而脫離了普通虛擬主機(jī),晉升為“云主機(jī)” : )

Windows Azure Queue最常見的一個(gè)應(yīng)用就是作為Worker Role和Web Role之間通訊的消息隊(duì)列。

   再舉個(gè)例子。Web Role是前臺賣牛肉面的,Worker Role是后臺煮牛肉面的。顧客只能接觸到Web Role這個(gè)店員,它收集不同顧客的需求,保持先來后到的順序記錄這些需求到一疊紙條上遞給大廚Worker Roler。大廚Worker Role帶著口罩,什么話也說不出來,他的工作就是按順序完成紙條記錄的任務(wù)。Windows Azure Queue就充當(dāng)了這個(gè)“任務(wù)紙條”的作用。

   理解完了“牛肉面”的例子,再看看下圖結(jié)合一下“云計(jì)算”的實(shí)際吧。是不是很容易理解呢?

  圖片看不清楚?請點(diǎn)擊這里查看原圖(大圖)。

 

  Windows Azure Table 與SQL Data Services 的重要不同之處:

   在實(shí)際開發(fā)中,這兩者都是最常用的數(shù)據(jù)存儲服務(wù)

   博客園網(wǎng)友 montaque和老趙同志在《【Azure Services Platform Step by Step-第8篇】開發(fā)部署Azure留言板》一文的評論中一起討論了Windows Azure Table和SQL Data Services的不同。

  Windows Azure Table 旨在提供輕便快捷低成本的大規(guī)模存儲數(shù)據(jù),包含實(shí)體和屬性。它不是關(guān)系數(shù)據(jù)庫,所以不能提供類似SQL中joins的方法,也不能管理 foreign keys。

  SQL Data Services旨在提供嚴(yán)謹(jǐn)?shù)年P(guān)系數(shù)據(jù)方法。

  在當(dāng)前的Azure版本中(Azure平臺第一個(gè)版本,feasure還很不完善),如果開發(fā)者對joins或foreign keys等關(guān)系數(shù)據(jù)庫的功能需求較大,你可以選擇SQL Data Services,反之建議使用開發(fā)更為快捷的Windows Azure Table。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
微軟云計(jì)算平臺解決方案之核心技術(shù)-IT168 技術(shù)開發(fā)專區(qū)
將ASP.NET Web應(yīng)用程序部署到Windows Azure Web Site和SQL 數(shù)據(jù)庫
Cloud Programming Concepts
讓云觸手可及 解讀微軟云計(jì)算 - 軟件即服務(wù)與云計(jì)算 - TT云計(jì)算
實(shí)戰(zhàn)第一個(gè)云程序
我看微軟.NET各子技術(shù)領(lǐng)域之應(yīng)用前景
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服