實戰第一個雲程序

一. 摘要

  首先聖殿騎士很高興雲計算系列能獲得你們的關注和支持,這個系列準備了幾個月,終於在今天發佈第一篇了(因爲文章太長,拆成了兩篇,這是其中一篇)。在這幾個月中經過不斷的使用和實踐,對雲計算總算有了一個較粗淺的認識,因此也但願可以和你們一塊兒分享。在發佈這篇文章以前也考慮了好久,由於一開始就講概念的話,勢必會得不到很好的效果,畢竟你們都不太熟悉這個新事物。與其「人云亦云」還不如先來一個簡單的實例,因此我就先選擇一個實踐應用來看到底雲計算能給咱們帶來什麼好處,從開發者角度,隨着這個概念的引入,究竟它須要作哪些改變纔是咱們最關心的問題。html

  本篇文章在安排上大體以下:首先回顧前面的基礎知識,這樣你們就能夠有一個大概的認識;接着介紹開發工具,正所謂「工欲善其事,必先利其器」;再接着就是開發第一個簡單程序,經過這個簡單程序來看一下其開發過程;開發完畢以後就須要部署,在講部署以前咱們必需要有帳戶來完成此操做,因此緊接着就依次講解帳戶申請和部署流程;你們一直在用程序+數據庫模式來開發咱們的應用,因此接下來咱們就講SQL AZURE和經典的程序+數據庫模式,這樣你們就能夠避免生疏感,從而使理解也變得更加容易一些。經過這篇文章,咱們對雲計算有了一個較清晰的認識,瞭解了它到底是什麼、究竟能作什麼以及如何作。若是你們清楚了這些問題,也就達到了本篇預期的效果,同時也爲系列後面的文章打下了基石,因此但願對你們能有所幫助。sql

二. 本文提綱

· 1.摘要數據庫

· 2.本文提綱windows

· 3.雲計算基礎回顧設計模式

· 4.開發工具瀏覽器

· 5.第一個簡單程序緩存

· 6.帳戶申請安全

· 7.部署服務器

· 8.SQL AZURE網絡

· 9.經典的程序+數據庫模式

· 10.本文總結

· 11.系列進度

三. 雲計算基礎回顧

在前面幾篇文章中,咱們講了不少概念,那麼這裏就簡單回顧一下(更多細節看前面幾篇文章):

一,行業發展趨勢

縱觀軟件行業的發展過程與趨勢能夠看出一共經歷瞭如下幾個階段:

◆ 面向機器語言(Monolithic)的開發模式:根據不一樣平臺的機器語言來定製化開發代碼,因此開發出來的代碼通用性和可重用性比較差,但這也是當時和硬件和軟件環境決定的。

◆ 面向過程(Procedure)的開發模式:獨立於機器的程序語言(如C、Pascal等)使得開發過程逐漸變得簡單了,用過程來描述咱們的需求、用函數來封裝咱們的代碼。面向過程的開發模式是對可重用代碼的封裝,這樣相對於前面的面向機器語言開發模式又進了一步;

◆面向對象(Object)的開發模式:用更接近現實的對象來描述和繪製一個相對完整的事物。面向對象的語言(C++、C#、Java等),提供了更抽象的封裝和重用模式。面向對象的開發強調從現實世界問題直接映射成咱們的程序,因此就更接近人類的天然思惟方式。面向對象的開發模式是對可重用對象的封裝,因此比前面的面向過程開發模式又進了一步;

◆ 面向組件(Component)的開發模式:面向對象在不少方面都改善了開發模式,可是隨着軟件開發規模的逐漸擴大,在涉及分佈式、異步架構等複雜環境中,代碼級別的重用性差,可維護性差,效率低的弱點就變得尤其突出,所以人們以架構運行環境 (如.Net,J2ee等)來提供完善的支撐平臺,從而把開發者解放出來,更專一於業務核心的開發。而這些業務功能以組件的形式(如DCOM, EJB等)發佈運行在架構運行環境中。軟件開發的重用模式也上升到業務組件的級別。面向組件的開發模式在異步架構、分佈式等的系統中應用尤其突出,這種模式對面向對象開發模式進行了很好的補充;

◆ 面向服務(SOA)的開發模式:當軟件的使用範圍擴展到更廣闊的範圍,每每會面對更加複雜的IT環境和更加靈活多變的需求。服務(Service)的概念出現了,人們將應用 (Application)以業務服務(Business Service)的形式公佈出來供別人使用,而徹底不須要去考慮這些業務服務運行在哪個架構體系上,由於全部的服務都講着一樣的語言。SOA考慮了業務發展的長期性,體現了"變化就是永恆"的思想。SOA的核心體如今企業應用或者業務功能上的"重用"和"互操做",而再也不把IT與業務對立起來,這能夠被視爲在IT驅動業務的方向上邁出的重要一步。面向服務的開發模式是爲了支持更加靈活的異構、分佈式系統;

◆ 面向雲(Cloud)的開發模式:其實利用前面的幾種開發模式就能夠解決當前各類應用了,但人們老是考慮對資源進行重組已達到對資源的最佳使用。這個時候雲計算就誕生了。雲計算(Cloud Computing)是網格計算、分佈式計算、並行計算、網絡存儲、虛擬化、負載均衡等傳統計算機技術和網絡技術發展融合的產物。提供資源的網絡被稱爲「雲」。「雲」中的資源在使用者看來是能夠無限擴展的,而且能夠隨時獲取,按需使用,隨時擴展,按使用付費。簡單的說雲計算簡化了咱們的基礎架構且給企業提供了更大的可配置性和靈活性。在原有模式下若是構建一個小型的應用,你須要租用服務器、你須要考慮租用服務器的安全和穩定因素等。若是構建一箇中大型的應用,咱們須要花巨資購買硬件來集羣,而後是鉅額資金購買所需的系統軟件並且這些也須要一些人員來維護。如今雲能提供咱們程序所需的硬件設備和軟件設備,你所作的只是按照你的須要租用這些已有的資源,上傳你的程序和修改配置文件,就能夠靈活擴展或收縮你佔用資源,這樣就能夠達到合理利用資源的目的,同時也減輕了維護這些軟硬件的成本。

那麼上面的幾個階段也能夠簡單的總結爲三個發展趨勢,這也是如今雲計算體現的三大特色:

◆ 軟件即服務(SaaS——Software as a Service)一種軟件分配模式,使應用程序由供應商或服務供應商託管起來,並經過網絡提供給用戶。

◆ 平臺即服務(PaaS——Platform as a Service)一種平臺分配模式,經過網絡提供操做系統和相關服務,這樣客戶就無需下載或安裝。

◆ 基礎設施即服務(IaaS——Infrastructure as a Service)一種基礎設施分配模式,把這些基礎設施經過外包的形式提供出來,其中包括存儲、硬件設備、服務器和網絡組件等。

二,雲計算的優點和劣勢

  任何一件事物都有利弊之分,雲計算更不例外了,因此咱們不能對它一律而論,只有充分的認識到這些優點和劣勢以後才能更好的作出決斷。也許你能夠稱它是一場比WEB 2.0還要巨大的革命;也許你也能夠稱它和當初AJAX同樣,屬概念炒做、新瓶裝舊酒;無論如何,沒有深刻虎穴焉得虎子,那麼下面咱們就具體分析一下它到底有哪些優點和劣勢。

優點或值得應用的方面:

1.能快速搭建咱們的應用

  雲計算最大的好處就是可以快速搭建咱們的企業應用,好比咱們如今要開發一個網站,咱們就沒必要擔憂是否須要花巨資購買硬件來集羣,而後是鉅額資金購買所需的系統軟件並且這些也須要一些人員來組建和維護的,若是恰巧這是一個比較新且可能會帶來盈利的商業點子,那搭建在雲上就是一個很是不錯的選擇,這起碼能比其餘企業先行一步。

2.提供了更大的靈活性和擴展性

  因爲「雲」的規模能夠動態伸縮,這樣就能夠不用加大投資硬件設備的力度來知足應用和用戶規模增加的須要,同時也無形起到了下降成本的做用。若是項目忽然廢棄,也沒有什麼大的損失,因此在這方面,雲計算是至關靈活和易於擴展的。

3.能夠解決一些特殊的場景

  不少公司都是在特定的時期盈利較大,好比一些情人節和聖誕節的幫辦公司,它們就是在這段時間的營業額比較大,在一年中的其餘時候,幾乎不能盈利,在這種狀況下,若是按照傳統的軟件部署習慣,勢必會形成必定的浪費。正如一個有大量波峯和波谷的企業同樣,你可能就被迫要將更多的IT資源分配給峯值時期使用。這種狀況下將峯值需求外包可能會節約更多成本。

4.縮短了產品的開發週期

  無論你是使用哪一個廠商的雲計算產品.都有一個顯著的特色,那就是能縮短產品的開發週期,一個想法到一個產品的開發週期由於雲計算的到來而逐漸縮短,由此你能夠看出裏面蘊藏的巨大價值。雲計算確實已經開始影響到咱們作業務的方式。咱們開始減小研究的循環週期,這對於咱們來講很是重要並且必要。

5.節約了創建基礎設施的成本

  其實對於每一個企業來講基礎設施都是一筆開支比較大的費用,並且除了費用以外還須要專門的人力和物力的投入,在這個過程當中又要保持快速的軟硬件更新速度來適應市場的不斷變化,因此雲計算的出現無疑是值得考慮的一種解決方案。不少時候,咱們也會時常注意到數據中心使用面積不夠、應用軟件超出基礎架構的承受能力、軟硬件更新太快等問題,雲計算服務能幫助企業將資本轉移到運營費用上,尤爲是在生死攸關的關鍵時刻,因此在這方面來講,是值得考慮的。

劣勢或須要改進的方面:

1.數據安全性

  對數據安全性方面看,目前比較熱的雲計算廠商亞馬遜、谷歌、IBM、微軟、甲骨文、思科、惠普、Salesforce、VMware等都沒有徹底解決這個問題,因此不少企業瞭解到所用數據的類型和分類後,他們仍是會決定經過內部監管來控制這些數據。而毫不會將具有競爭優點或包含用戶敏感信息的應用軟件放在公共雲上,這個也是衆多企業保持觀望的一個緣由。

2.廠商按流量收費有時會超出預算

  雖然雲廠商推出雲產品時大力宣傳隨時獲取,按需使用,隨時擴展,按使用付費,可是在很大程度上價格都比較高,至少在目前尚未下降的趨勢,這樣對某些企業就會起到相反的效果,好比說像索尼娛樂這樣的公司,他們就不考慮採用外部雲服務來應對存儲擴展能力的挑戰。位於加利福尼亞的Culver City的高級系統工程師Nick Bali表示。天天索尼動畫訪問和產生的數據量都在4千兆到12千兆之間。Bali解釋說"若是放在雲上進行數據讀取的話,咱們須要的網絡帶寬是很是龐大的,這樣所需的成本過於巨大,甚至超過了購買存儲自己的費用。目前索尼公司正在使用ParaScale的雲存儲軟件評估私人存儲雲。因此從這點看出並非雲平臺就必定便宜。

3.企業的自主權下降

  其實關於企業自主權這個問題是一個比較爭議的話題,也許這也是出於慎重的考慮,畢竟對本身公司的應用,你們都但願能徹底管理和控制,原來的模式中,能夠搭建本身的基礎架構,每層應用均可以自定義的設置和管理;而換到雲平臺之後,企業不須要擔憂基礎架構,也不須要擔憂諸如安全、容錯等方面,好處是一個方面,但同時也讓企業感到了擔心,畢竟如今熟悉的東西忽然變成了一個黑盒。固然在這個時候衆廠商也推出了內部雲或者雲套件來補救,可是這個問題也沒獲得根本解決。

4.規模大且成型的企業難以擴展

  不少大型企業已經花了巨資來購買硬件並逐漸構建了本身的服務器集羣(有的企業還大量購置了最新的刀片服務器),而後也購買了所需的系統軟件和應用軟件,並且也在此基礎上搭建了基礎平臺架構。那麼針對這樣的企業來講,他們沒有必要把本身的應用捨本求末的放在雲上,因此這個也是不少企業不肯意移植的緣由之一。

5.雲計算自己還不太成熟

  儘管衆雲計算廠商把雲計算炒得大紅大紫,每一個廠商推出的雲產品和雲套件也是琳琅滿目、層出不窮,可是他們都各自爲戰,沒有有統一的平臺和標準來規範。因此冷靜下來想想,到底它能不能爲咱們企業所用,在安全性、穩定性和企業自己因素方面必須儘管慎重的考慮才行,不要被眼前的廣告所忽悠。你要知道每一個企業要宣傳本身的產品都會採起各類手段的,好比說到公共雲不安全,廠商就開始推私有云;說到企業原有應用難以整合到雲上,廠商立刻就推出了混合雲;可是在根本上雲計算還有很長的路要走,不少地方都得優化。固然咱們也願意在這個過程當中充當試金石,由於體驗它以後,咱們相信它一定會成爲將來的趨勢。

三,目前的現狀

  瞭解了雲計算的基本概念之後,接下來要作的就是如何選擇合適的雲供應商,畢竟咱們不是亞馬遜、Google、微軟、阿里巴巴、浪潮等專一於雲計算研發的企業,因此若是咱們使用雲計算,必須得選擇一個合適的雲廠商來爲咱們服務。

cloudcompany

                                         圖1

  上面的圖中包含了前期的幾家雲計算廠家,其實整體來講如今雲計算廠商可謂星羅棋佈,不光是國外的亞馬遜、谷歌、IBM、微軟、甲骨文、思科、惠普、Salesforce、VMware等大型企業,還包括國內的阿里巴巴、中移動、浪潮等也加入到了這個競技場。

四,微軟的雲平臺

  雖然咱們不能親自開發一個雲平臺,可是咱們可使用並體驗雲平臺給咱們帶來的好處,在這個過程當中咱們也能夠經過具體使用、深刻分析、再次使用、迴歸總結的方式來逐步深化咱們的認知程度,這樣循環往復之後就從中得到預期的收益。咱們這個系列目前主要研究微軟的雲平臺——Windows Azure Platform,它是微軟完整的雲計算平臺,目前包含了以下三大部分(詳細介紹見雲計算之旅4—Windows Azure總覽 ):

WindowsAzure

                                        圖2

  
◆Windows Azure:運行在雲中的操做系統,對於用戶來講是虛擬且透明的,其中提供了Compute(計算),Storage(存儲),以及Manage(管理)這三個主要功能及其底層服務,使用起來至關的便捷。 
◆SQL Azure:運行於雲中的一個關係數據庫,和SQL Server 2008相似,可是在功能上尚未那麼強大。 
◆AppFabric:全名是Windows Azure platform AppFabric,提供了訪問控制、服務總線等服務,主要用於把基礎應用鏈接到雲中。

四. 開發工具

  俗話說「工欲善其事,必先利其器」。咱們在開發一個任何一個程序以前都須要瞭解開發它的工具,使用了開發工具以後總能起到事半功倍的效果,這一點是無需置疑的,畢竟命令行、彙編、記事本的方式是須要大量的時間和精力,並且調試和異常跟蹤等也極爲困難。針對微軟的windows azure的開發工具很簡單,咱們在安裝了VS2008或VS20十、SQL Server 2005/2008/2008 R2後,再安裝一個擴展的工具包就能夠進行雲應用的開發了,這個擴展工具包是:Windows Azure Tools for Microsoft Visual Studio 1.2 (裏面包含Windows Azure SDK和Visual Studio集成),其下載的地址是: 
http://www.microsoft.com/downloads/details.aspx?FamilyID=2274a0a8-5d37-4eac-b50a-e197dc340f6f&displaylang=en

這個版本是2010年6月發佈,其中包括Windows Azure Tools + SDK,因此安裝了它之後就不須要再安裝其餘的軟件了,其中功能包括:

◆新特性支持:對Visual Studio 2010 RTM的徹底支持,這樣咱們就可使用最新的模板和強大的新特性。 
◆多版本支持:.NET 4 的支持使得開發者構建服務時具備選擇.NET 2.0、.NET 3.0、.NET 3.5 或者 .NET 4 框架的靈活性。 
◆應用可視化:經過在Visual Studio Server Explorer中顯示Windows Azure table 和blob容器的只讀視圖,咱們能夠用視圖的方式預覽咱們所建立的應用。 Cloud storage explorer也使得開發者能更輕鬆的構建出更優秀的服務。 
◆整合部署:開發者只需在Visual Studio Solution Explorer中選擇"Publish"便能直接部署服務,這個在1.1版本也提供了。 
◆服務監控:幫助開發者經過在Server Explorer中的'compute'節點來追蹤和管理其服務狀態。 
◆調試簡便:IntelliTrace 支持運行於雲端的服務,簡化了對於雲端服務的調試。

  其實使用VS 2008 和VS2010開發雲程序的過程沒有本質上的區別,主要是VS 2010提供了雲應用的開發、調試、部署、管理的整套工具,如開發雲計算程序模式、開發雲計算的項目模板、離線測試雲計算項目、雲計算部署等等功能的支持,這些功能都縮短了雲應用的開發週期,在很大程度上提升了開發效率,所以咱們在不少時候會使用VS 2010來開發雲應用,固然爲了照顧部分使用VS 2008的朋友,咱們也會盡可能提供兩個版本。

五. 第一個簡單程序

步驟一:建立雲項目

   正所謂「千里之行始於足下」。安裝了開發工具以後,咱們就來建立第一個應用程序,因爲我安裝的是windows 7操做系統,因此用管理員權限打開Visual Studio 2008,若是是XP等操做系統,直接運行Visual Studio 2008便可,由於以前咱們已經安裝了Windows Azure Tools for Microsoft Visual Studio 1.2,因此你就會看到下圖模板中多了一個Cloud的選項(圖中標記1),點擊Cloud選項,選擇Windows Azure Cloud Service模板(圖中標記2),命名項目爲FirstCloudApp,點擊OK按鈕建立咱們的項目:

1

                                        圖3

  在彈出窗口出現後,按照下圖所示,分別點擊標籤1的ASP.NET Web Role和標籤2的「>」按鈕。該步驟會在右邊窗口中生成一個新的WebRole項,此時你能夠點擊標籤4的筆形圖標,而後改變該Web Role名字,同時你也能夠點擊標籤5的小叉刪除新建的項,操做完以後點擊OK按鈕便可。

2

                                        圖4

步驟二:觀察生成的雲項目

 項目結構以下圖所示:

Untitled5

                                        圖5

  由項目結構圖咱們能夠看到雲項目和普通的ASP.Net項目的差異,ASP.Net Web Role雲項目會產生一個雲應用的項目和一個ASP.Net的項目,雲應用項目對ASP.Net項目進行引用,同時雲應用項目中還包含服務程序文件和服務配置文件,這兩個文件在配置、運行和部署雲應用時將要用到,沒有這兩個文件,也就沒有咱們的雲程序。你們也能夠經過這些配置文件來具體定製化咱們的應用,在下一次課程中,咱們也會詳細講解這個程序文件的內部原理以及注意事項。

編輯Default.aspx頁面,添加一些簡單的測試信息,代碼如:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <img alt="" src="2010-8-22%2011-55-50.png" style="width: 314px; height: 155px" /><br />
        </div>
        <div style="font-size: x-large; color: #FF0000">
            聖殿騎士已經在雲上了!!!</div>
    </div>
    </form>
</body>
</html>

步驟三:解決運行錯誤問題

按F5鍵開始調試程序。因爲沒有安裝SQL Server Express,因此會看到下圖所示的錯誤信息

err1

                                        圖6

  那麼咱們可使用VS 2010的安裝文件添加安裝來解決這個問題,同時你也能夠經過命令行的方式來解決,在開始菜單中點擊Windows Azure SDK Command Prompt進入命令行窗口,以下圖:

Untitled1 

                                        圖7

在以下的命令行窗口輸入DSInti /sqlInstance:.(意思是:「DSInit /sqlinstance:你的sql instance名字」,咱們這裏本機,因此是.)

err3 (2)

                                        圖8

而後點擊下面的OK按鈕,從新運行程序便可。

err3 (1)

                                        圖9

步驟四:再次運行程序,獲得正確結果

  再次運行程序,你將會看到下面的頁面,這表示你建立的windows azure的程序能夠正常運行並獲得了你想要的結果,若是你比較細心,你會發現它是借用本地的IIS來Host的,地址是:http://127.0.01:81/Default.aspx

4

                                        圖10

通過上面的步驟,咱們已經建立了第一個雲程序,接下來要作的就是部署到所謂的雲上面去了。

步驟五:觀察本地雲模擬器

若是你足夠細心的話,會發現任務欄裏多了一個程序的圖標,見下圖1標記:

Untitled2

                                        圖11

  這個就是dev Fabric和dev Storage的管理器。也就是傳說中的雲端模擬器,這個模擬器可讓咱們在本地測試本身的程序是否可以在Windows Azure Platform上正常運行。通常狀況下若是在本地測試經過的程序,上傳到Windows Azure Platform上就能夠正常運行,可是也有一些特殊的狀況,咱們在後面會講到。點擊上圖的2標記,就進入下圖的dev Fabric管理器:

Untitled3

                                        圖12

從上圖的dev Fabric管理器能夠看到咱們當前運行的程序以及執行的狀態,這個能夠幫助咱們進行跟蹤和調試。

  點擊圖11的3標記,就進入下圖的dev Storage管理器,Windows Azure爲應用程序提供了Blobs,Tables和Queues三種存儲機制,你能夠在這個界面來開啓或者關閉某種存儲機制。

Untitled4

                                        圖13

對於上面這些功能,咱們在這篇不會作過多的探討,之後會在專門的文章中作詳細介紹。

六. 帳戶申請

在部署以前,咱們先要有一個帳戶,若是沒有帳戶須要從http://www.microsoft.com/windowsazure/offers/這裏進行註冊購買,具體以下頁面

2010-9-2 17-48-09

                                        圖14

購買了並激活之後就能夠經過https://windows.azure.com/Cloud/Provisioning/Default.aspx登錄

2010-9-2 17-58-06

                                        圖15

登錄成功之後,你會看到以下的主界面,在這個界面裏面,你能夠建立、管理你的Windows Azure、SQL Azure和AppFabric。

8 

                                        圖16

七. 部署

步驟一:發佈項目

  開發完一個應用程序並在本地完成測試以後,就能夠部署到雲上去了,咱們在Visual Studio的Solution Explorer窗口中,右擊FirstCloudApp項目,點擊Publish選項,以下圖:

5 

                                        圖17

  這裏有兩個選擇方案發布你的項目,第一就是建立雲程序包,手動上傳;第二就是設置信息自動上傳。因爲下篇咱們會分析其內部的原理,因此咱們這裏就選擇第一種方式,以下圖:

6

                                        圖18

點擊OK按鈕,等待Visual Studio建立壓縮包並自動彈出壓縮包的窗口。壓縮包和配置文件以下圖:

7

                                        圖19

步驟二:Windows Azure管理站點

  前面咱們輸入了Live ID和密碼登錄到了Windows Azure管理站點,你們看到該網頁列出了咱們可以使用的Windows Azure服務,固然因爲購買的服務不一樣,您的項目數量也會有所不一樣,這裏咱們須要建立一個服務來Host咱們的程序。你能夠點擊下圖標記1或者標記2來建立咱們的服務:

8

                                        圖20

步驟三:建立Hosted Services

因爲是第一次部署,咱們須要先建立一個新的Hosted Services來Host咱們的程序。點擊New Service連接:

9 

                                        圖21

彈出以下頁面,填入Hosted Services的標籤名並輸入該Hosted Services的描述,而後點擊Next按鈕:

10

                                        圖22

  輸入你想要的域名,而後點擊Check Availability按鈕檢查該域名是否可用,接下來就是設置服務器的地理位置,因爲我如今處在新加坡,因此選擇東南亞,若是在中國大陸,則能夠選擇東亞。最後點擊Create按鈕完成建立:

11

                                        圖23

步驟四:上傳並部署程序

  如今Hosted Services已經建立完成。咱們可以在網頁上看到咱們剛剛建立的Hosted Service,以下圖,標記1能夠修改程序的描述。標記2能夠刪除咱們剛纔建立的服務。標記3和4則是咱們剛建立服務的兩個環境,windows azure在這方面作得很人性化,提供了Staging和Production兩個環境來部署咱們的應用,這個就和咱們實際的項目流程比較相似了,也給咱們提供了更大的靈活性。標記5則給咱們提供了一個很重要的功能,你能夠經過證書來保護你的應用程序。

12

                                        圖24

  點擊上圖Staging的Deploy按鈕彈出以下頁面。選擇在步驟一中生成的兩個文件而後上傳。在Application Package一欄中輸入.cspkg文件路徑。在Configuration Settings一欄中輸入.cscfg文件路徑。點擊Deploy:

13

                                        圖25

步驟五:啓動並測試程序

點擊Deploy按鈕以後,看到以下頁面,而後等待一段比較長的時間(時間根據你項目大小而定):

14

                                        圖26

直到出現下面的界面,你會看到當前的狀態爲Stopped,這個時候點擊Run按鈕

15

                                        圖27

你會看到狀態由Stopped逐漸變爲Initializing、Busy和Ready,當狀態變爲Ready後,點擊下面的Web Site URL連接就能夠看到咱們剛纔修改的網頁了。

16

                                        圖28

  通過剛纔Staging環境測試以後,咱們就能夠點擊上圖中間的轉換按鈕,這個時候Staging環境中的應用程序就會上傳到Production環境,而後通過前面Staging相同操做,就能夠見到以下圖所示界面

17

                                        圖29

當發現WebRole1的狀態爲Ready時,咱們的Web Role項目就已經成功運行了。見下圖:

19

                                        圖30

而後點擊Web Site URL連接,這個時候就能夠看到咱們期待的頁面了。

18

                                        圖31

到此爲止咱們已經成功地把第一個雲程序發佈到雲端了!如今任何可以訪問Internet的機器均可以經過http://firstcloudapplication.cloudapp.net/進行訪問。

八. SQL AZURE

  在瀏覽器輸入https://windows.azure.com/Cloud/Provisioning/Default.aspx,打開頁面而後輸入了Live ID和密碼登錄到了Windows Azure管理站點(如圖32所示),前面咱們建立了一個服務來Host咱們的程序,這裏咱們要介紹另一個功能——SQL AZURE,點擊頁面的SQL AZURE連接

8

                                        圖32

進入如圖33所示的頁面,能夠看到當前的全部數據庫和全部操做按鈕,那麼咱們就簡單對它們進行一些介紹:

標籤1中的Reset Password按鈕能夠修改登錄密碼;

標籤2中的Drop Server按鈕是刪除當前SQL AZURE服務;

標籤3中的Databases則是顯示全部的數據庫信息,其中包括數據庫名、當前大小、最大容量、版本(Web版本有1G和5G兩個容量可供選擇,Business版本支持10G、20G、30G、40G乃至50G的大容量存儲);

標籤4中的Firewall Settings是一個比較重要的功能,能夠經過設置具體可由哪些IP訪問,即至關於簡單防火牆的功能。

標籤5中的Connection Strings按鈕是程序連接字符串的信息,經過它能夠獲取程序使用什麼樣的字符串來訪問數據庫,一共有ADO.NET和ODBC兩種方式。

標籤6中的Test Connectivity按鈕這個功能能夠測試剛纔咱們建立的數據庫是否鏈接正常。

標籤7中的Create Database按鈕則是咱們最經常使用的功能,使用它來建立咱們的數據庫。

標籤8中的Drop Database按鈕刪除當前選擇的數據庫。

20

                                        圖33

  點擊圖33標籤7中的Create Database按鈕打開圖34所示的界面,咱們輸入要建立的數據庫名FirstCloudDB,選擇版本類型,而後選擇容量大小以後點擊Create按鈕便可完成建立工做。

21

                                        圖34

  點擊圖33標籤5中的Connection Strings按鈕打開如圖35所示界面,由於咱們要在程序或者SQL Server Management Studio R2中使用到連接字符串,因此在使用的時候須要從這裏查看或者拷貝。

22

                                        圖35

  點擊圖33標籤6中的Test Connectivity按鈕,這個功能能夠測試剛纔咱們建立的數據庫是否鏈接正常,輸入Username和Password,而後點擊Connect按鈕,就能夠測試鏈接是否成功。

23

                                        圖36

  點擊圖33標籤4中的Firewall Settings,打開如圖圖37所示的界面,咱們知道這是一個比較重要的功能,能夠經過設置具體可由哪些IP訪問,即至關於簡單防火牆的功能。咱們先把本機加入到Firewall Settings裏面,這樣就能夠經過本機的程序或者SQL Server Management Studio R2操做數據了。

24

                                        圖37

當設置了Firewall Settings之後就能夠經過管理工具或者程序進行鏈接了。

  在講下面的內容以前,你首先得安裝SQL Server R2版本的數據庫,具體下載地址:http://msdn.microsoft.com/en-us/subscriptions/default.aspx

安裝完成以後,咱們就可使用SQL Server Management Studio R2登錄SQL AZURE了,打開SQL Server Management Studio R2,如圖38所示

25

                                        圖38

  登錄成功之後進入如圖39所示的SQL Server Management Studio R2主界面,這個版本和其餘版本基本一致,我也不作過多介紹,後面講SQL AZURE會專門進行探討。

2010-9-6 15-28-28

                                        圖39

九. 經典的程序+數據庫模式

  前面用了較大篇幅介紹了Windows Azure和SQL AZURE的基本使用,那麼這裏就用一個簡單的實例來看一下經典的程序+數據庫模式在azure中有哪些改變,首先打開SQL Server Management Studio,登錄到SQL AZURE數據庫,經過以下語句創建所需的表和插入所需的數據(如圖40所示)。

26

                                        圖40

建立了數據庫之後,而後咱們打開前面建立的FirstCloudApp程序,在Default.aspx頁面放置一個Label 控件,這個控件用來呈現從數據庫返回的數據

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebRole1._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <div>
            <img alt="" src="2010-8-22%2011-55-50.png" style="width: 314px; height: 155px" /><br />
        </div>
        <div style="font-size: x-large; color: #FF0000">
            聖殿騎士已經在雲上了!!!</div>
        <div style="font-size: x-large; color: #FF0000">
            從SQL AZURE讀取的數據:<asp:Label ID="lblSqlAzure" runat="server" Text="Label"></asp:Label>
        </div>
    </div>
    </form>
</body>
</html>

  在Default.aspx.cs頁面寫一段簡單讀取數據庫數據的代碼,爲了可以簡單的展現,我沒有對其進行分裝,也沒有引入任何修飾代碼,這樣你們能夠更好的理解一些,若是你們看不慣這些代碼,也敬請見諒,後面文章會講解咱們本身開發的ORM框架,AOP對日誌、異常、特定植入代碼的處理,IOC對框架和組件解耦的支持以及經常使用設計模式和SOA service bus等的引入。

namespace WebRole1
{
    public partial class _Default : System.Web.UI.Page
    {
        private const string DBNAME_STRING = "FirstCloudDB";
        private const string CONNECTION_STRING = "Server=tcp:kd9vhdfdfw.database.windows.net;Database=" + DBNAME_STRING + ";User ID=KnightsWarrior@kd9vhjwe8w;Password=Ncs@135456;Trusted_Connection=False;Encrypt=False";  //  On Azure.
        private const string SELECT_STRING = "SELECT [message] FROM [FirstCloudDB].[dbo].[tTest]";

        protected void Page_Load(object sender, EventArgs e)
        {
            this.lblSqlAzure.Text = GetResult(SELECT_STRING).ToString();
        }

        public static object GetResult(string SQLString)
        {
            using (SqlConnection connection = new SqlConnection(CONNECTION_STRING))
            {
                using (SqlCommand cmd = new SqlCommand(SQLString, connection))
                {
                    try
                    {
                        connection.Open();
                        object obj = cmd.ExecuteScalar();
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                        {
                            return null;
                        }
                        else
                        {
                            return obj;
                        }
                    }
                    catch (System.Data.SqlClient.SqlException e)
                    {
                        connection.Close();
                        throw new Exception(e.Message);
                    }
                }
            }
        }
    }
}

 

  編碼完了之後就能夠在本地測試了,測試經過之後發佈咱們的程序(這個和前面操做相似,因此簡單略過)。因爲以前咱們已經部署了開發的程序,這個時候只須要更新之前的服務就行。

27

                                        圖41

點擊圖41中所示的Upgrade按鈕,彈出以下頁面:

28

                                        圖42

  在圖42標籤1中選擇更新類型;在圖42標籤2中選擇程序包;在圖42標籤3中選擇配置文件包;在圖42標籤4中設置操做系統,通常咱們採用默認配置;在圖42標籤5中填入這次發佈的Label,代表發佈編號;在圖42標籤6中能夠設置是所有更新仍是特定更新;最後點擊圖42標籤7的Deploy按鈕。

19

                                        圖43

而後點擊圖43中的Web Site URL的連接http://firstcloudapplication.cloudapp.net/,發現剛纔開發的程序已經成功的部署在雲上了。

29 

                                        圖44

  如今任何可以訪問Internet的機器均可以經過http://firstcloudapplication.cloudapp.net/進行訪問,至此咱們就講完了最基本的開發模式,也爲下面深刻的探討打下了基礎。

十. 本文總結

  這篇文章講的概念也不是不少,可是做爲基礎篇,也但願你們能引發注意,由於沒有它,咱們後面的文章也無從談起。經過這篇文章,咱們必需要對雲有一個感性和理性的認識。最重要的是要認清它究竟給咱們帶來了哪些改變,固然今天的例子也只是雲計算的冰山一角,可是咱們要養成思考的習慣,好比在此前的傳統作法中,對於一箇中小型網站,若是部署的話,咱們會租用服務器來託管咱們的應用。對於較大型且企業想本身主導的網站,咱們能夠本身購置服務器,而後對服務器集羣,作好分佈式和負載均衡。如今引入雲計算以後,咱們開發完一個網站以後就能夠直接把它部署到雲上,這樣就能夠不用考慮負載均衡等問題,固然爲了實現這個還要作不少配置,咱們後面會詳細介紹,這樣作了之後大大提升了此應用的靈活性和擴展性,同時也減小了基礎架構的成本和負擔,更爲重要的是它能按需使用,這給一些時令和節假日企業也帶來了福音。對於安全性以及大型應用沒有在此篇討論的範疇,後面會逐漸涉及。

今天的例子過於淺顯,可是千萬不要把雲計算等同於虛擬機或空間租用商,這樣就太暴殄天物了,除了具備Host網站的功能外,還有一些常見的功能,如:
1. 能夠把應用程序放上去執行,這樣就至關於運行在操做系統中,而且結合SQL AZURE速度是很是快的,對於某些大數據量的處理是至關有利的。
2. 把雲存儲做爲緩存來使用,這樣就可使速度加快,這樣用戶也更容易接受。
3. 默認提供了標準的Event Streams來記錄日誌和發出警告等
4. 你能夠根據程序的健康報告來查看運行情況,原來咱們會實現一套機制
5. 安全雖然如今作得仍是不太健全,可是能夠經過數字證書來防止篡改,同時也能夠利用加密解密技術。你要相信廠商也在逐漸完善。
6. 對大型的分佈式項目,能夠經過設置AppFabric來實現負載均衡,這在原來使要作不少工做的。
7. 以前的SSB和MSMQ等消息隊列能夠很簡單的用Quee來實現,這樣能夠簡化不少操做,也避免了常見錯誤的出現。
8. 對於一個頗有想法但沒有強大基礎設施的公司,若是選擇雲計算能夠很容易實現他們的應用。
固然還有不少,我就不一一列舉了,我也不是想誇雲計算有多好,後面的文章也會詳細介紹,其實雲計算確實給咱們提供了不少便捷,在後面的文章中咱們經過具體應用來看一下到底它是否是適合於咱們的項目,因此也請你們拭目以待,誠然,因爲本身知識淺薄,若是不正確的地方,也請你們海涵,最重要的仍是相互交流、共同提升!

十一.系列進度

雲計算之旅1—開篇有益

雲計算之旅2—雲計算總覽

雲計算之旅3—雲計算提供商綜合對比

雲計算之旅4—Windows Azure總覽

雲計算之旅5—實戰第一個雲程序

雲計算之旅6—剖析Windows Azure程序內部原理

雲計算之旅7—ASP.NET Web Role  

雲計算之旅8—ASP.NET MVC Web Role  

雲計算之旅9—WCF Service Web Role  

雲計算之旅10—Work Role   

雲計算之旅11—CGI Web Role 

雲計算之旅12—雲存儲之Blob基礎及實例

雲計算之旅13—雲存儲之Table基礎及實例

雲計算之旅14—雲存儲之Quee基礎及實例

雲計算之旅15—雲存儲之Dive基礎及實例

雲計算之旅16—SQL Azure 之一(基礎介紹)

雲計算之旅17—SQL Azure之一(應用及RDBMS支持)

雲計算之旅18—SQL Azure之三(安全、工具及應用)

雲計算之旅19—AppFabric之一(基礎介紹)

雲計算之旅20—AppFabric之二(Service Bus及應用)

雲計算之旅21—AppFabric之三(Access Control Service及應用)

雲計算之旅22—雲平臺安全問題

雲計算之旅23—老技術兼容問題

雲計算之旅24—ASP.NET+SQL項目移植到雲平臺

雲計算之旅25—WinForm/WPF項目移植到雲平臺(雲/端模式)

雲計算之旅26—ASP.NET+Silverlight項目移植到雲平臺

雲計算之旅27—Amazon雲計算

雲計算之旅28—Google雲計算

雲計算之旅29—SalesForce雲計算

雲計算之旅30—雲計算開發總結

代碼下載:FirstCloudApp     配套視頻敬請關注MSDN Webcast官方網站,到時會逐漸更新上去,可能講得很差,也敬請見諒!

另外新建了一個雲計算專區(地址:http://home.cnblogs.com/group/CloudComputing/),你們有什麼相關的疑問或話題也能夠在裏面進行探討,同時也但願各位推選一位組長來帶領你們共同窗習,本人自認才疏學淺,無力勝任,因此歡迎廣大愛好者踊躍加入,咱們也有理由相信雲計算必定會帶來一場軟件行業的變革!

原文出自:http://blog.csdn.net/knightswarrior/article/details/9430507

相關文章
相關標籤/搜索