《你必須知道的.NET》網站 | Anytao技術部落格
[漫步雲端,Azure Services Platform]第二回:我的第一個雲端應用:Hello,Cloud!
發布日期:2008.11.19 作者:Anytao
2008 Anytao.com ,Anytao原創作品,轉貼請註明作者和出處。
| 說在,開篇之前 |
哈哈,我的第一個雲端應用誕生了,這就是Hello,Cloud。不信,你可以訪問http://anytao.cloudapp.net/來一窺究竟。 現在,我們可以大聲的歡呼:Hello,Cloud!雲端運算時代,果然是來了。還等什麼,趕快試試吧:-) |
1 引言
在上篇《第一回:認識Azure Services Platform》一文中,我帶著TechEd的興奮之情將Azure Service做了一個概要性的介紹,因為沒有申請到Invitation Token,所以只能掩飾饑渴的衝動,把完成第一個雲端應用的重任留到了第二回。就是曆史上所有講述程式設計語言的著作以Hello,world開篇一樣,本文也不例外的從Hello,Cloud!這一傳統開始,實現一個運行在雲端服務的Web應用。讓我們品嘗一下,漫步雲端的快感吧:-)
2 必要的準備
實現一個簡單的雲端應用,如果沒有資料庫服務支援或者其他服務支援,我們仍然需要一些必要的準備,對於Azure應用而言以下鋪墊是必不可少的:
- 註冊有效Azure Services帳號,詳情可以訪問這裡。
- 申請Invitation Token,以便可以訪問Azure Services Developer Portal中的相關服務,例如Windows Azure,Live Service,.NET Services等。
- 安裝Azure Service SDK等必要支援,一遍可以使用我們熟悉的Visual Studio 2008來開發Cloud Application。詳細的說明請參考《第一回:認識Azure Services Platform》中的闡述。
注意:因為當前仍處於CTP版,所以Resource Token並不能簡單擷取,大家耐心等等:-)
好了,萬事具備只欠東風,我們開始Step By Step式的構建我們的Hello,Cloud。在下文的實現過程中,我們假設你已經完成上述所有步驟的準備,成功申請了Invitation Token,成功安裝了相關的SDK和工具支援。如果還有疑問,可參考《第一回:認識Azure Services Platform》的詳細分析,或者留言討論:-)
3 實現我的Hello,Cloud!
- Step1,使用Visual Studio 2008建立新的 應用,我們建立一個Project,在項目模板中選擇“Cloud Service”—>”Web Cloud Service”:
在該項目模板中,我們還可以選擇例如“Web And Worker Cloud Service”、“Worker Cloud Service”、“Cloud WorkFlow”項目模板,我們將在以後的系列中逐步瞭解相應的內容,敬請期待。
- Step2,建立項目之後,Visual Studio將自動產生兩個項目:Anytao.AzureServices.HelloCloud和Anytao.AzureServices.HelloCloud_WebRole,
其中Anytao.AzureServices.HelloCloud_WebRole是一個普通的ASP .NET Web項目,而另一個Anytao.AzureServices.HelloCloud則是一個Web Cloud Service項目,其中包含了Roles檔案夾中包含了我們將發布的Web項目程式集Anytao.AzureServices.HelloCloud_WebRole.dll,而ServiceConfiguration.cscfg檔案描述了部署的相關配置資訊:
<?xml version="1.0"?>
<ServiceConfiguration serviceName="Anytao.AzureServices.HelloCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
<Role name="WebRole">
<Instances count="1"/>
<ConfigurationSettings>
</ConfigurationSettings>
</Role>
</ServiceConfiguration>
而ServiceDefinition.csdef描述了InputEndpoints,LocalStorage等配置映射資訊:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="Anytao.AzureServices.HelloCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
<WebRole name="WebRole">
<InputEndpoints>
<!-- Must use port 80 for http and port 443 for https when running in the cloud -->
<InputEndpoint name="HttpIn" protocol="http" port="80" />
</InputEndpoints>
</WebRole>
</ServiceDefinition>
我們無需關注更多檔案的結構資訊,接著我們的Hello,Cloud實現。
- Step3,完成Web項目Anytao.AzureServices.HelloCloud_WebRole,在Default頁面中實現簡單的輸出Hello,World!,此過程完全等同於在傳統ASP .NET Web Application中建立一個Html輸出一樣,當然你也可以添加一個Button並實現一個簡單的事件,編譯運行將開啟Azure模擬器來託管本地應用,而不是Web伺服器。
- Step4,在Cloud項目上右鍵選擇“Publis…”,將登陸Azure Services Developer Portal準備部署應用,同時開啟編輯產生的Publish本地檔案夾,其中包含了Anytao.AzureServices.HelloCloud程式包和ServiceConfiguration設定檔,用於在後續步驟中發布Cloud應用。
- Step5,登陸開啟的Azure Services Developer Portal,點擊“New Project”,建立新的Azure Services項目,在Service組件面板中選擇“Windows Azure”下的“Hosted Services”選項:
在隨後的建立嚮導步驟中,將包括
- 同意Team of Use條款
- 輸入項目屬性(也就是建立項目便簽和描述資訊)
- 選擇輸入Hosted Services名稱,同時必須保證選擇名稱的唯一性。該Name也將隨後用於發布你的Cloud應用時的訪問網域名稱,例如輸入anytao作為該名稱,將通過http://anytao.cloudapp.net/訪問我的Hello,Cloud應用了。
- Step6,匯入程式包和設定檔。選擇“Staging”的“Deploying”按鈕,開啟部署對話方塊,分別選擇本地Publish檔案中的Anytao.AzureServices.HelloCloud程式包和ServiceConfiguration設定檔,
選擇正確的程式包和設定檔,輸入部署資訊,點擊“Deploy”,程式包和設定檔將上傳到我們仰慕已經的雲端伺服器,至此我們第一個雲端應用將成功上傳到神奇而浩瀚的雲中,僅有一步之遙我們就可以實現第一個Hello,Cloud!應用了。
部署之後,我們可以選擇配置來重新匯入或者修改配置資訊,可以選擇啟動或者刪除執行相應的其他動作。
- Step7,將部署的應用轉化為Producation,並選擇啟動,至此完成整個Hello,Cloud的建立和部署。我們可以休息休息,然後品味自己的第一個雲端傑作。開始吧:
http://anytao.cloudapp.net/
你看,是不是很酷。
- Step8,幸福一下,準備下一篇《深入Hello,Cloud細節》,開始未來的旅程。上茶:-)
4 總結
另外,因為Hello,Cloud最終將託管於Cloud中,所以傳統意義上的一些編程方式將發生變化,例如對於路徑的擷取將不同於我們傳統意義在伺服器路徑上的操作方式,所以Server.MapPath擷取方式必然失效,那麼我們在系列的後續中逐漸來分享Cloud應用中的差異和特性。本文,僅僅是個開始。
現在,我們可以大聲的歡呼:Hello,Cloud!雲端運算時代,果然是來了。還等什麼,趕快試試吧:-)
參考文獻
- http://www.azure.com/
- http://channel9.msdn.com/posts/smarx/Windows-Azure-Hello-Cloud/
anytao | 2008 Anytao.com
2008/11/19 | 榮譽出品:http://anytao.cnblogs.com/
本文以“現狀”提供且沒有任何擔保,同時也沒有授予任何權利。 | This posting is provided "AS IS" with no warranties, and confers no rights.
本文著作權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文串連,否則保留追究法律責任的權利。