小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

實戰(zhàn)第一個云程序

 看風景D人 2014-02-17

一. 摘要

  首先圣殿騎士很高興云計算系列能得到大家的關注和支持,這個系列準備了幾個月,終于在今天發(fā)布第一篇了(由于文章太長,拆成了兩篇,這是其中一篇)。在這幾個月中通過不斷的使用和實踐,對云計算總算有了一個較粗淺的認識,所以也希望能夠和大家一起分享。在發(fā)布這篇文章之前也考慮了很久,因為一開始就講概念的話,勢必會得不到很好的效果,畢竟大家都不太熟悉這個新事物。與其“人云亦云”還不如先來一個簡單的實例,所以我就先選擇一個實踐應用來看到底云計算能給我們帶來什么好處,從開發(fā)者角度,隨著這個概念的引入,究竟它需要做哪些改變才是我們最關心的問題。

  本篇文章在安排上大致如下:首先回顧前面的基礎知識,這樣大家就可以有一個大概的認識;接著介紹開發(fā)工具,正所謂“工欲善其事,必先利其器”;再接著就是開發(fā)第一個簡單程序,通過這個簡單程序來看一下其開發(fā)過程;開發(fā)完畢之后就需要部署,在講部署之前我們必須要有賬戶來完成此操作,所以緊接著就依次講解賬戶申請和部署流程;大家一直在用程序+數(shù)據(jù)庫模式來開發(fā)我們的應用,所以接下來我們就講SQL AZURE和經(jīng)典的程序+數(shù)據(jù)庫模式,這樣大家就可以避免生疏感,從而使理解也變得更加容易一些。通過這篇文章,我們對云計算有了一個較清晰的認識,了解了它究竟是什么、究竟能做什么以及如何做。如果大家清楚了這些問題,也就達到了本篇預期的效果,同時也為系列后面的文章打下了基石,所以希望對大家能有所幫助。

二. 本文提綱

· 1.摘要

· 2.本文提綱

· 3.云計算基礎回顧

· 4.開發(fā)工具

· 5.第一個簡單程序

· 6.賬戶申請

· 7.部署

· 8.SQL AZURE

· 9.經(jīng)典的程序+數(shù)據(jù)庫模式

· 10.本文總結

· 11.系列進度

三. 云計算基礎回顧

在前面幾篇文章中,我們講了很多概念,那么這里就簡單回顧一下(更多細節(jié)看前面幾篇文章):

一,行業(yè)發(fā)展趨勢

縱觀軟件行業(yè)的發(fā)展過程與趨勢可以看出一共經(jīng)歷了以下幾個階段:

◆ 面向機器語言(Monolithic)的開發(fā)模式:根據(jù)不同平臺的機器語言來定制化開發(fā)代碼,所以開發(fā)出來的代碼通用性和可重用性比較差,但這也是當時和硬件和軟件環(huán)境決定的。

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

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

◆ 面向組件(Component)的開發(fā)模式:面向對象在很多方面都改善了開發(fā)模式,但是隨著軟件開發(fā)規(guī)模的逐漸擴大,在涉及分布式、異步架構等復雜環(huán)境中,代碼級別的重用性差,可維護性差,效率低的弱點就變得尤為突出,因此人們以架構運行環(huán)境 (如.Net,J2ee等)來提供完善的支撐平臺,從而把開發(fā)者解放出來,更專注于業(yè)務核心的開發(fā)。而這些業(yè)務功能以組件的形式(如DCOM, EJB等)發(fā)布運行在架構運行環(huán)境中。軟件開發(fā)的重用模式也上升到業(yè)務組件的級別。面向組件的開發(fā)模式在異步架構、分布式等的系統(tǒng)中應用尤為突出,這種模式對面向對象開發(fā)模式進行了很好的補充;

◆ 面向服務(SOA)的開發(fā)模式:當軟件的使用范圍擴展到更廣闊的范圍,往往會面對更加復雜的IT環(huán)境和更加靈活多變的需求。服務(Service)的概念出現(xiàn)了,人們將應用 (Application)以業(yè)務服務(Business Service)的形式公布出來供別人使用,而完全不需要去考慮這些業(yè)務服務運行在哪一個架構體系上,因為所有的服務都講著同樣的語言。SOA考慮了業(yè)務發(fā)展的長期性,體現(xiàn)了"變化就是永恒"的思想。SOA的核心體現(xiàn)在企業(yè)應用或者業(yè)務功能上的"重用"和"互操作",而不再把IT與業(yè)務對立起來,這可以被視為在IT驅動業(yè)務的方向上邁出的重要一步。面向服務的開發(fā)模式是為了支持更加靈活的異構、分布式系統(tǒng);

◆ 面向云(Cloud)的開發(fā)模式:其實利用前面的幾種開發(fā)模式就可以解決當前各種應用了,但人們總是考慮對資源進行重組已達到對資源的最佳使用。這個時候云計算就誕生了。云計算(Cloud Computing)是網(wǎng)格計算、分布式計算、并行計算、網(wǎng)絡存儲、虛擬化、負載均衡等傳統(tǒng)計算機技術和網(wǎng)絡技術發(fā)展融合的產(chǎn)物。提供資源的網(wǎng)絡被稱為“云”?!霸啤敝械馁Y源在使用者看來是可以無限擴展的,并且可以隨時獲取,按需使用,隨時擴展,按使用付費。簡單的說云計算簡化了我們的基礎架構且給企業(yè)提供了更大的可配置性和靈活性。在原有模式下如果構建一個小型的應用,你需要租用服務器、你需要考慮租用服務器的安全和穩(wěn)定因素等。如果構建一個中大型的應用,我們需要花巨資購買硬件來集群,然后是巨額資金購買所需的系統(tǒng)軟件而且這些也需要一些人員來維護?,F(xiàn)在云能提供我們程序所需的硬件設備和軟件設備,你所做的只是按照你的需要租用這些已有的資源,上傳你的程序和修改配置文件,就可以靈活擴展或收縮你占用資源,這樣就可以達到合理利用資源的目的,同時也減輕了維護這些軟硬件的成本。

那么上面的幾個階段也可以簡單的總結為三個發(fā)展趨勢,這也是現(xiàn)在云計算體現(xiàn)的三大特點:

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

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

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

二,云計算的優(yōu)勢和劣勢

  任何一件事物都有利弊之分,云計算更不例外了,所以我們不能對它一概而論,只有充分的認識到這些優(yōu)勢和劣勢之后才能更好的做出決斷。也許你可以稱它是一場比WEB 2.0還要巨大的革命;也許你也可以稱它和當初AJAX一樣,屬概念炒作、新瓶裝舊酒;不管如何,沒有深入虎穴焉得虎子,那么下面我們就具體分析一下它到底有哪些優(yōu)勢和劣勢。

優(yōu)勢或值得應用的方面:

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

  云計算最大的好處就是能夠快速搭建我們的企業(yè)應用,比如我們現(xiàn)在要開發(fā)一個網(wǎng)站,我們就不必擔心是否需要花巨資購買硬件來集群,然后是巨額資金購買所需的系統(tǒng)軟件而且這些也需要一些人員來組建和維護的,如果恰巧這是一個比較新且可能會帶來盈利的商業(yè)點子,那搭建在云上就是一個非常不錯的選擇,這起碼能比其他企業(yè)先行一步。

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

  由于“云”的規(guī)??梢詣討B(tài)伸縮,這樣就可以不用加大投資硬件設備的力度來滿足應用和用戶規(guī)模增長的需要,同時也無形起到了降低成本的作用。如果項目突然廢棄,也沒有什么大的損失,所以在這方面,云計算是相當靈活和易于擴展的。

3.可以解決一些特殊的場景

  很多公司都是在特定的時期盈利較大,比如一些情人節(jié)和圣誕節(jié)的幫辦公司,它們就是在這段時間的營業(yè)額比較大,在一年中的其他時候,幾乎不能盈利,在這種情況下,如果按照傳統(tǒng)的軟件部署習慣,勢必會造成一定的浪費。正如一個有大量波峰和波谷的企業(yè)一樣,你可能就被迫要將更多的IT資源分配給峰值時期使用。這種情況下將峰值需求外包可能會節(jié)約更多成本。

4.縮短了產(chǎn)品的開發(fā)周期

  不管你是使用哪個廠商的云計算產(chǎn)品.都有一個顯著的特點,那就是能縮短產(chǎn)品的開發(fā)周期,一個想法到一個產(chǎn)品的開發(fā)周期因為云計算的到來而逐漸縮短,由此你可以看出里面蘊藏的巨大價值。云計算確實已經(jīng)開始影響到我們做業(yè)務的方式。我們開始減少研究的循環(huán)周期,這對于我們來說非常重要而且必要。

5.節(jié)約了建立基礎設施的成本

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

劣勢或需要改進的方面:

1.數(shù)據(jù)安全性

  對數(shù)據(jù)安全性方面看,目前比較熱的云計算廠商亞馬遜、谷歌、IBM、微軟、甲骨文、思科、惠普、Salesforce、VMware等都沒有完全解決這個問題,所以很多企業(yè)了解到所用數(shù)據(jù)的類型和分類后,他們還是會決定通過內部監(jiān)管來控制這些數(shù)據(jù)。而絕不會將具備競爭優(yōu)勢或包含用戶敏感信息的應用軟件放在公共云上,這個也是眾多企業(yè)保持觀望的一個原因。

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

  雖然云廠商推出云產(chǎn)品時大力宣傳隨時獲取,按需使用,隨時擴展,按使用付費,但是在很大程度上價格都比較高,至少在目前還沒有降低的趨勢,這樣對某些企業(yè)就會起到相反的效果,比如說像索尼娛樂這樣的公司,他們就不考慮采用外部云服務來應對存儲擴展能力的挑戰(zhàn)。位于加利福尼亞的Culver City的高級系統(tǒng)工程師Nick Bali表示。每天索尼動畫訪問和產(chǎn)生的數(shù)據(jù)量都在4千兆到12千兆之間。Bali解釋說"如果放在云上進行數(shù)據(jù)讀取的話,我們需要的網(wǎng)絡帶寬是非常龐大的,這樣所需的成本過于巨大,甚至超過了購買存儲本身的費用。目前索尼公司正在使用ParaScale的云存儲軟件評估私人存儲云。所以從這點看出并不是云平臺就一定便宜。

3.企業(yè)的自主權降低

  其實關于企業(yè)自主權這個問題是一個比較爭議的話題,也許這也是出于慎重的考慮,畢竟對自己公司的應用,大家都希望能完全管理和控制,原來的模式中,可以搭建自己的基礎架構,每層應用都可以自定義的設置和管理;而換到云平臺以后,企業(yè)不需要擔心基礎架構,也不需要擔心諸如安全、容錯等方面,好處是一個方面,但同時也讓企業(yè)感到了擔憂,畢竟現(xiàn)在熟悉的東西突然變成了一個黑盒。當然在這個時候眾廠商也推出了內部云或者云套件來補救,但是這個問題也沒得到根本解決。

4.規(guī)模大且成型的企業(yè)難以擴展

  很多大型企業(yè)已經(jīng)花了巨資來購買硬件并逐漸構建了自己的服務器集群(有的企業(yè)還大量購置了最新的刀片服務器),然后也購買了所需的系統(tǒng)軟件和應用軟件,而且也在此基礎上搭建了基礎平臺架構。那么針對這樣的企業(yè)來說,他們沒有必要把自己的應用舍本求末的放在云上,所以這個也是很多企業(yè)不愿意移植的原因之一。

5.云計算本身還不太成熟

  盡管眾云計算廠商把云計算炒得大紅大紫,每個廠商推出的云產(chǎn)品和云套件也是琳瑯滿目、層出不窮,但是他們都各自為戰(zhàn),沒有有統(tǒng)一的平臺和標準來規(guī)范。所以冷靜下來想一想,到底它能不能為我們企業(yè)所用,在安全性、穩(wěn)定性和企業(yè)本身因素方面必須盡管慎重的考慮才行,不要被眼前的廣告所忽悠。你要知道每個企業(yè)要宣傳自己的產(chǎn)品都會采取各種手段的,比如說到公共云不安全,廠商就開始推私有云;說到企業(yè)原有應用難以整合到云上,廠商馬上就推出了混合云;但是在根本上云計算還有很長的路要走,很多地方都得優(yōu)化。當然我們也愿意在這個過程中充當試金石,因為體驗它之后,我們相信它必定會成為未來的趨勢。

三,目前的現(xiàn)狀

  了解了云計算的基本概念以后,接下來要做的就是如何選擇合適的云供應商,畢竟我們不是亞馬遜、Google、微軟、阿里巴巴、浪潮等專注于云計算研發(fā)的企業(yè),所以如果我們使用云計算,必須得選擇一個合適的云廠商來為我們服務。

cloudcompany

                                         圖1

  上面的圖中包含了前期的幾家云計算廠家,其實總體來說現(xiàn)在云計算廠商可謂星羅棋布,不光是國外的亞馬遜、谷歌、IBM、微軟、甲骨文、思科、惠普、Salesforce、VMware等大型企業(yè),還包括國內的阿里巴巴、中移動、浪潮等也加入到了這個競技場。

四,微軟的云平臺

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

WindowsAzure

                                        圖2

  
◆Windows Azure:運行在云中的操作系統(tǒng),對于用戶來說是虛擬且透明的,其中提供了Compute(計算),Storage(存儲),以及Manage(管理)這三個主要功能及其底層服務,使用起來相當?shù)谋憬荨?nbsp;
◆SQL Azure:運行于云中的一個關系數(shù)據(jù)庫,和SQL Server 2008類似,但是在功能上還沒有那么強大。 
◆AppFabric:全名是Windows Azure platform AppFabric,提供了訪問控制、服務總線等服務,主要用于把基礎應用連接到云中。

四. 開發(fā)工具

  俗話說“工欲善其事,必先利其器”。我們在開發(fā)一個任何一個程序之前都需要了解開發(fā)它的工具,使用了開發(fā)工具之后總能起到事半功倍的效果,這一點是無需置疑的,畢竟命令行、匯編、記事本的方式是需要大量的時間和精力,而且調試和異常跟蹤等也極為困難。針對微軟的windows azure的開發(fā)工具很簡單,我們在安裝了VS2008或VS2010、SQL Server 2005/2008/2008 R2后,再安裝一個擴展的工具包就可以進行云應用的開發(fā)了,這個擴展工具包是: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月發(fā)布,其中包括Windows Azure Tools + SDK,所以安裝了它以后就不需要再安裝其他的軟件了,其中功能包括:

◆新特性支持:對Visual Studio 2010 RTM的完全支持,這樣我們就可以使用最新的模板和強大的新特性。 
◆多版本支持:.NET 4 的支持使得開發(fā)者構建服務時具有選擇.NET 2.0、.NET 3.0、.NET 3.5 或者 .NET 4 框架的靈活性。 
◆應用可視化:通過在Visual Studio Server Explorer中顯示W(wǎng)indows Azure table 和blob容器的只讀視圖,我們可以用視圖的方式預覽我們所創(chuàng)建的應用。 Cloud storage explorer也使得開發(fā)者能更輕松的構建出更優(yōu)秀的服務。 
◆整合部署:開發(fā)者只需在Visual Studio Solution Explorer中選擇"Publish"便能直接部署服務,這個在1.1版本也提供了。 
◆服務監(jiān)控:幫助開發(fā)者通過在Server Explorer中的'compute'節(jié)點來追蹤和管理其服務狀態(tài)。 
◆調試簡便:IntelliTrace 支持運行于云端的服務,簡化了對于云端服務的調試。

  其實使用VS 2008 和VS2010開發(fā)云程序的過程沒有本質上的區(qū)別,主要是VS 2010提供了云應用的開發(fā)、調試、部署、管理的整套工具,如開發(fā)云計算程序模式、開發(fā)云計算的項目模板、離線測試云計算項目、云計算部署等等功能的支持,這些功能都縮短了云應用的開發(fā)周期,在很大程度上提高了開發(fā)效率,因此我們在很多時候會使用VS 2010來開發(fā)云應用,當然為了照顧部分使用VS 2008的朋友,我們也會盡量提供兩個版本。

五. 第一個簡單程序

步驟一:創(chuàng)建云項目

   正所謂“千里之行始于足下”。安裝了開發(fā)工具之后,我們就來創(chuàng)建第一個應用程序,由于我安裝的是windows 7操作系統(tǒng),所以用管理員權限打開Visual Studio 2008,如果是XP等操作系統(tǒng),直接運行Visual Studio 2008即可,因為之前我們已經(jīng)安裝了Windows Azure Tools for Microsoft Visual Studio 1.2,所以你就會看到下圖模板中多了一個Cloud的選項(圖中標記1),點擊Cloud選項,選擇Windows Azure Cloud Service模板(圖中標記2),命名項目為FirstCloudApp,點擊OK按鈕創(chuàng)建我們的項目:

1

                                        圖3

  在彈出窗口出現(xiàn)后,按照下圖所示,分別點擊標簽1的ASP.NET Web Role和標簽2的“>”按鈕。該步驟會在右邊窗口中生成一個新的WebRole項,此時你可以點擊標簽4的筆形圖標,然后改變該Web Role名字,同時你也可以點擊標簽5的小叉刪除新建的項,操作完之后點擊OK按鈕即可。

2

                                        圖4

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

 項目結構如下圖所示:

Untitled5

                                        圖5

  由項目結構圖我們可以看到云項目和普通的ASP.Net項目的差別,ASP.Net Web Role云項目會產(chǎn)生一個云應用的項目和一個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./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www./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">
圣殿騎士已經(jīng)在云上了?。?!</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

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

  再次運行程序,你將會看到下面的頁面,這表示你創(chuàng)建的windows azure的程序可以正常運行并得到了你想要的結果,如果你比較細心,你會發(fā)現(xiàn)它是借用本地的IIS來Host的,地址是:http://127.0.0.1:81/Default.aspx

4

                                        圖10

經(jīng)過上面的步驟,我們已經(jīng)創(chuàng)建了第一個云程序,接下來要做的就是部署到所謂的云上面去了。

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

如果你足夠細心的話,會發(fā)現(xiàn)任務欄里多了一個程序的圖標,見下圖1標記:

Untitled2

                                        圖11

  這個就是dev Fabric和dev Storage的管理器。也就是傳說中的云端模擬器,這個模擬器可以讓我們在本地測試自己的程序是否能夠在Windows Azure Platform上正常運行。一般情況下如果在本地測試通過的程序,上傳到Windows Azure Platform上就可以正常運行,但是也有一些特殊的情況,我們在后面會講到。點擊上圖的2標記,就進入下圖的dev Fabric管理器:

Untitled3

                                        圖12

從上圖的dev Fabric管理器可以看到我們當前運行的程序以及執(zhí)行的狀態(tài),這個可以幫助我們進行跟蹤和調試。

  點擊圖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./Cloud/Provisioning/Default.aspx登陸

2010-9-2 17-58-06

                                        圖15

登陸成功以后,你會看到如下的主界面,在這個界面里面,你可以創(chuàng)建、管理你的Windows Azure、SQL Azure和AppFabric。

8 

                                        圖16

七. 部署

步驟一:發(fā)布項目

  開發(fā)完一個應用程序并在本地完成測試之后,就可以部署到云上去了,我們在Visual Studio的Solution Explorer窗口中,右擊FirstCloudApp項目,點擊Publish選項,如下圖:

5 

                                        圖17

  這里有兩個選擇方案發(fā)布你的項目,第一就是創(chuàng)建云程序包,手動上傳;第二就是設置信息自動上傳。由于下篇我們會分析其內部的原理,所以我們這里就選擇第一種方式,如下圖:

6

                                        圖18

點擊OK按鈕,等待Visual Studio創(chuàng)建壓縮包并自動彈出壓縮包的窗口。壓縮包和配置文件如下圖:

7

                                        圖19

步驟二:Windows Azure管理站點

  前面我們輸入了Live ID和密碼登陸到了Windows Azure管理站點,大家看到該網(wǎng)頁列出了我們能夠使用的Windows Azure服務,當然由于購買的服務不同,您的項目數(shù)量也會有所不同,這里我們需要創(chuàng)建一個服務來Host我們的程序。你可以點擊下圖標記1或者標記2來創(chuàng)建我們的服務:

8

                                        圖20

步驟三:創(chuàng)建Hosted Services

由于是第一次部署,我們需要先創(chuàng)建一個新的Hosted Services來Host我們的程序。點擊New Service鏈接:

9 

                                        圖21

彈出如下頁面,填入Hosted Services的標簽名并輸入該Hosted Services的描述,然后點擊Next按鈕:

10

                                        圖22

  輸入你想要的域名,然后點擊Check Availability按鈕檢查該域名是否可用,接下來就是設置服務器的地理位置,由于我現(xiàn)在處在新加坡,所以選擇東南亞,如果在中國大陸,則可以選擇東亞。最后點擊Create按鈕完成創(chuàng)建:

11

                                        圖23

步驟四:上傳并部署程序

  現(xiàn)在Hosted Services已經(jīng)創(chuàng)建完成。我們能夠在網(wǎng)頁上看到我們剛剛創(chuàng)建的Hosted Service,如下圖,標記1可以修改程序的描述。標記2可以刪除我們剛才創(chuàng)建的服務。標記3和4則是我們剛創(chuàng)建服務的兩個環(huán)境,windows azure在這方面做得很人性化,提供了Staging和Production兩個環(huán)境來部署我們的應用,這個就和我們實際的項目流程比較類似了,也給我們提供了更大的靈活性。標記5則給我們提供了一個很重要的功能,你可以通過證書來保護你的應用程序。

12

                                        圖24

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

13

                                        圖25

步驟五:啟動并測試程序

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

14

                                        圖26

直到出現(xiàn)下面的界面,你會看到當前的狀態(tài)為Stopped,這個時候點擊Run按鈕

15

                                        圖27

你會看到狀態(tài)由Stopped逐漸變?yōu)镮nitializing、Busy和Ready,當狀態(tài)變?yōu)镽eady后,點擊下面的Web Site URL鏈接就可以看到我們剛才修改的網(wǎng)頁了。

16

                                        圖28

  經(jīng)過剛才Staging環(huán)境測試之后,我們就可以點擊上圖中間的轉換按鈕,這個時候Staging環(huán)境中的應用程序就會上傳到Production環(huán)境,然后經(jīng)過前面Staging相同操作,就可以見到如下圖所示界面

17

                                        圖29

當發(fā)現(xiàn)WebRole1的狀態(tài)為Ready時,我們的Web Role項目就已經(jīng)成功運行了。見下圖:

19

                                        圖30

然后點擊Web Site URL鏈接,這個時候就可以看到我們期待的頁面了。

18

                                        圖31

到此為止我們已經(jīng)成功地把第一個云程序發(fā)布到云端了!現(xiàn)在任何能夠訪問Internet的機器都可以通過http://firstcloudapplication./進行訪問。

八. SQL AZURE

  在瀏覽器輸入https://windows./Cloud/Provisioning/Default.aspx,打開頁面然后輸入了Live ID和密碼登陸到了Windows Azure管理站點(如圖32所示),前面我們創(chuàng)建了一個服務來Host我們的程序,這里我們要介紹另外一個功能——SQL AZURE,點擊頁面的SQL AZURE鏈接

8

                                        圖32

進入如圖33所示的頁面,可以看到當前的所有數(shù)據(jù)庫和所有操作按鈕,那么我們就簡單對它們進行一些介紹:

標簽1中的Reset Password按鈕可以修改登陸密碼;

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

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

標簽4中的Firewall Settings是一個比較重要的功能,可以通過設置具體可由哪些IP訪問,即相當于簡單防火墻的功能。

標簽5中的Connection Strings按鈕是程序鏈接字符串的信息,通過它可以獲取程序使用什么樣的字符串來訪問數(shù)據(jù)庫,一共有ADO.NET和ODBC兩種方式。

標簽6中的Test Connectivity按鈕這個功能可以測試剛才我們創(chuàng)建的數(shù)據(jù)庫是否連接正常。

標簽7中的Create Database按鈕則是我們最常用的功能,使用它來創(chuàng)建我們的數(shù)據(jù)庫。

標簽8中的Drop Database按鈕刪除當前選擇的數(shù)據(jù)庫。

20

                                        圖33

  點擊圖33標簽7中的Create Database按鈕打開圖34所示的界面,我們輸入要創(chuàng)建的數(shù)據(jù)庫名FirstCloudDB,選擇版本類型,然后選擇容量大小之后點擊Create按鈕即可完成創(chuàng)建工作。

21

                                        圖34

  點擊圖33標簽5中的Connection Strings按鈕打開如圖35所示界面,因為我們要在程序或者SQL Server Management Studio R2中使用到鏈接字符串,所以在使用的時候需要從這里查看或者拷貝。

22

                                        圖35

  點擊圖33標簽6中的Test Connectivity按鈕,這個功能可以測試剛才我們創(chuàng)建的數(shù)據(jù)庫是否連接正常,輸入Username和Password,然后點擊Connect按鈕,就可以測試連接是否成功。

23

                                        圖36

  點擊圖33標簽4中的Firewall Settings,打開如圖圖37所示的界面,我們知道這是一個比較重要的功能,可以通過設置具體可由哪些IP訪問,即相當于簡單防火墻的功能。我們先把本機加入到Firewall Settings里面,這樣就可以通過本機的程序或者SQL Server Management Studio R2操作數(shù)據(jù)了。

24

                                        圖37

當設置了Firewall Settings以后就可以通過管理工具或者程序進行連接了。

  在講下面的內容之前,你首先得安裝SQL Server R2版本的數(shù)據(jù)庫,具體下載地址: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

九. 經(jīng)典的程序+數(shù)據(jù)庫模式

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

26

                                        圖40

創(chuàng)建了數(shù)據(jù)庫以后,然后我們打開前面創(chuàng)建的FirstCloudApp程序,在Default.aspx頁面放置一個Label 控件,這個控件用來呈現(xiàn)從數(shù)據(jù)庫返回的數(shù)據(jù)

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

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www./TR/xhtml1/DTD/xhtml1-transitional.dtd">
<
html xmlns="http://www./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">
圣殿騎士已經(jīng)在云上了?。?!</div>
<
div style="font-size: x-large; color: #FF0000">
從SQL AZURE讀取的數(shù)據(jù):<asp:Label ID="lblSqlAzure" runat="server" Text="Label"></asp:Label>
</
div>
</
div>
</
form>
</
body>
</
html>

  在Default.aspx.cs頁面寫一段簡單讀取數(shù)據(jù)庫數(shù)據(jù)的代碼,為了能夠簡單的展示,我沒有對其進行分裝,也沒有引入任何修飾代碼,這樣大家可以更好的理解一些,如果大家看不慣這些代碼,也敬請見諒,后面文章會講解我們自己開發(fā)的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);
}
}
}
}
}
}

  編碼完了以后就可以在本地測試了,測試通過以后發(fā)布我們的程序(這個和前面操作類似,所以簡單略過)。由于之前我們已經(jīng)部署了開發(fā)的程序,這個時候只需要更新以前的服務就行。

27

                                        圖41

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

28

                                        圖42

  在圖42標簽1中選擇更新類型;在圖42標簽2中選擇程序包;在圖42標簽3中選擇配置文件包;在圖42標簽4中設置操作系統(tǒng),一般我們采用默認配置;在圖42標簽5中填入此次發(fā)布的Label,表明發(fā)布編號;在圖42標簽6中可以設置是全部更新還是特定更新;最后點擊圖42標簽7的Deploy按鈕。

19

                                        圖43

然后點擊圖43中的Web Site URL的鏈接http://firstcloudapplication./,發(fā)現(xiàn)剛才開發(fā)的程序已經(jīng)成功的部署在云上了。

29 

                                        圖44

  現(xiàn)在任何能夠訪問Internet的機器都可以通過http://firstcloudapplication./進行訪問,至此我們就講完了最基本的開發(fā)模式,也為下面深入的探討打下了基礎。

十. 本文總結

  這篇文章講的概念也不是很多,但是作為基礎篇,也希望大家能引起注意,因為沒有它,我們后面的文章也無從談起。通過這篇文章,我們必須要對云有一個感性和理性的認識。最重要的是要認清它究竟給我們帶來了哪些改變,當然今天的例子也只是云計算的冰山一角,但是我們要養(yǎng)成思考的習慣,比如在此前的傳統(tǒng)做法中,對于一個中小型網(wǎng)站,如果部署的話,我們會租用服務器來托管我們的應用。對于較大型且企業(yè)想自己主導的網(wǎng)站,我們可以自己購置服務器,然后對服務器集群,做好分布式和負載均衡?,F(xiàn)在引入云計算之后,我們開發(fā)完一個網(wǎng)站之后就可以直接把它部署到云上,這樣就可以不用考慮負載均衡等問題,當然為了實現(xiàn)這個還要做很多配置,我們后面會詳細介紹,這樣做了以后大大提高了此應用的靈活性和擴展性,同時也減少了基礎架構的成本和負擔,更為重要的是它能按需使用,這給一些時令和節(jié)假日企業(yè)也帶來了福音。對于安全性以及大型應用沒有在此篇討論的范疇,后面會逐漸涉及。

今天的例子過于淺顯,但是千萬不要把云計算等同于虛擬機或空間租用商,這樣就太暴殄天物了,除了具有Host網(wǎng)站的功能外,還有一些常見的功能,如:
1. 可以把應用程序放上去執(zhí)行,這樣就相當于運行在操作系統(tǒng)中,并且結合SQL AZURE速度是非??斓?,對于某些大數(shù)據(jù)量的處理是相當有利的。
2. 把云存儲作為緩存來使用,這樣就可以使速度加快,這樣用戶也更容易接受。
3. 默認提供了標準的Event Streams來記錄日志和發(fā)出警告等
4. 你可以根據(jù)程序的健康報告來查看運行狀況,原來我們會實現(xiàn)一套機制
5. 安全雖然現(xiàn)在做得還是不太健全,但是可以通過數(shù)字證書來防止篡改,同時也可以利用加密解密技術。你要相信廠商也在逐漸完善。
6. 對大型的分布式項目,可以通過設置AppFabric來實現(xiàn)負載均衡,這在原來使要做很多工作的。
7. 之前的SSB和MSMQ等消息隊列可以很簡單的用Quee來實現(xiàn),這樣可以簡化很多操作,也避免了常見錯誤的出現(xiàn)。
8. 對于一個很有想法但沒有強大基礎設施的公司,如果選擇云計算可以很容易實現(xiàn)他們的應用。
當然還有很多,我就不一一列舉了,我也不是想夸云計算有多好,后面的文章也會詳細介紹,其實云計算確實給我們提供了很多便捷,在后面的文章中我們通過具體應用來看一下到底它是不是適合于我們的項目,所以也請大家拭目以待,誠然,由于自己知識淺薄,如果不正確的地方,也請大家海涵,最重要的還是相互交流、共同提高!

十一.系列進度

云計算之旅1—開篇有益

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

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

云計算之旅4—Windows Azure總覽

云計算之旅5—實戰(zhàn)第一個云程序

云計算之旅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—云計算開發(fā)總結

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

另外新建了一個云計算專區(qū)(地址:http://home.cnblogs.com/group/CloudComputing/),大家有什么相關的疑問或話題也可以在里面進行探討,同時也希望各位推選一位組長來帶領大家共同學習,本人自認才疏學淺,無力勝任,所以歡迎廣大愛好者踴躍加入,我們也有理由相信云計算一定會帶來一場軟件行業(yè)的變革!


作者:圣殿騎士 
出處:http://www.cnblogs.com/KnightsWarrior/ 
關于作者:專注于微軟平臺項目架構、管理和企業(yè)解決方案。自認在面向對象及面向服務領域有一定的造詣,熟悉設計模式、TDD、極限編程、領域驅動、架構設計、敏捷開發(fā)和項目管理?,F(xiàn)主要從事WinForm、ASP.NET、WPF、WCF、WF、Silverlight 、Biztalk、Windows Azure等云計算方面的項目開發(fā)、架構、管理和企業(yè)培訓工作。如有問題或建議,請多多賜教! 
本文版權歸作者和博客園共有,歡迎轉載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多