本手作實驗旨在建立兩個雲端專案,包括展示如何將 web 應用程式和 ASP.NET Web API 服務部署到 Windows Azure。學員將學會如何使用 Visual Studio 2012 建立專案、分享 session 狀態並使用 SQL Database 維護資料。實作需具備 Windows Azure 訂閱,預計實作時間約為 45-60 分鐘。
GWAB Lab-雲端專案
本手作實驗 (Hands-onLab) 為 GWAB 2013 Taiwan 的手作實驗之一, 本手作實驗將會建
立兩個雲端專案,一個是 Web Role,用於展示將 Web 應用程式掛上 Windows Azure 的
流程;另一個是 Worker Role,用以展示將 ASP.NET Web API Self-hosting 服務掛載到
Windows Azure 以供應雲端上的服務,最後會使用 SQL Database 在兩個不同的執行個體
之間維護 Session 工作狀態。
本實作的學習目標
當實作完成時,學員應該會:
使用 Visual Studio 2012 建立雲端專案。
部署 ASP.NET MVC 4.0 Web 應用程式到雲端。
部署 ASP.NET Web API 服務到雲端。
在不同執行個體之間共享 Session 工作階段資料。
本實作的前置需求
1. Visual Studio 2012 或是 Visual Studio 2012 Express for Web。
2. Windows Azure SDK for .NET 與 Visual Studio Tools for Windows Azure v1.8
3. SQL Server 2012 或 SQL Server Express 2012 或 SQL Server Express 2012 LocalDB
4. 有效的 Windows Azure 訂閱或申請 90 天試用訂閱。
本實作的估計時間
2.
大約 45-60 分鐘
實作的步驟
練習1:建立與部署雲端專案
練習 2:建立與部署雲端上的 Web API 服務
練習 3:在執行個體之間共用 Session 工作狀態資料
練習 1. 建立與部署雲端專案
1. 請開啟 Visual Studio 2012,並選擇【檔案 -> 新增 -> 專案】,這時應會看到新增專
案的對話盒,請選擇 Visual C# -> Cloud -> Windows Azure 雲端服務。
2. 將專案名稱命名為 FirstCloudService,並按確定,此時會出現新增 Windows Azure 雲
端服務的對話盒,請選擇 ASP.NET MVC 4 Web 角色,並按中間的 “>” 將專案加到方
案內,然後按確定。
3.
3. 在 MVC專案類型對話盒出現時,請選擇網際網路應用程式專案,然後按確定。Visual
Studio 會將雲端專案與 MVC 應用程式專案產生出來。
4. 在 Visual Studio 完成專案建置後,請按 F5 來執行專案,當應用程式啟動完成時,您
會看到下列畫面。
4.
5. 請將除錯器停止後,在 VisualStudio 2012 的雲端專案上按下右鍵,並選擇發行。
6. 此時發行 Windows Azure 應用程式精靈會出現,請選擇『登入以下載憑證』,進入
Windows Azure 管理介面1
,這時會自動下載一份發行設定檔。
1
會需要登入。
9. 在建立 WindowsAzure 服務對話盒出現時,於名稱給定一個獨一無二的名稱,位置請
選擇 East Asia (東亞),然後按確定。
若名稱重覆時會出現錯誤訊息:
NOTE:
您也可以先在 Windows Azure 管理介面中建立新的雲端服務後,再開啟 Windows Azure
發行精靈,選擇已建立的雲端服務。
10. 請選擇進階設定頁籤,並在儲存體帳戶的下拉選單中選擇建立新項目,並給予一個獨
一無二的名稱,位置一樣選擇 East Asia,然後按確定。完成這個步驟之後,按下一
步。
練習 2. 建立與部署雲端上的Web API 服務
1. 在前一個練習中所建立的雲端專案上的角色資料夾按右鍵,選擇加入 > 新增背景工作
角色專案,然後在加入新的.NET Framework 4.5 角色專案中,選擇背景工作角色,將
專案命名為 WebApiService,然後按確定。
2. 在 Visual Studio 完成加入 Worker Role 到專案的工作後,請到 WebApiService 專案
上,於參考資料夾上按右鍵,選擇管理 NuGet 套件:
12.
3. 當管理 NuGet套件對話盒出現時,請確認左側是選擇線上,然後在搜尋的對話中輸入
Web API Self Host,NuGet 會搜尋目前可用的套件,請確認有找到 Microsoft
ASP.NET Web API Self Host,然後按安裝。當授權合約出現時,請選擇我接受,即可
繼續進行安裝。當完成安裝後,請關閉此對話盒。
13.
4. 請於參考資料夾上按右鍵,選擇加入參考,並在參考管理員中,於組件>架構選擇
System.Net.Http 組件後,按確定。
5.請在 WebApiService 內加入一個新的類別,名稱為 ValuesController,然後在
ValuesController.cs 中加入下列程式碼,完成後將它儲存:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Controllers;
namespace WebApiService
14.
{
public class ValuesController: ApiController
{
public IEnumerable<string> Get()
{
return new string[] { "Value1", "Value2" };
}
}
}
6. 打開 WorkerRole.cs 檔案,在命名空間宣告中加入下列宣告:
using System.Web.Http;
using System.Web.Http.SelfHost;
7. 於 WorkerRole.cs 檔案中,宣告下列類別層次的變數:
public class WorkerRole : RoleEntryPoint
{
private HttpSelfHostServer _httpServer = null;
private HttpSelfHostConfiguration _httpConfiguration = null;
...
}
8. 請於 WorkerRole.cs 檔案中的 OnStart 方法中,加入下列紅字部份的程式碼:
public override bool OnStart()
{
ServicePointManager.DefaultConnectionLimit = 12;
this._httpConfiguration = new
HttpSelfHostConfiguration("http://[cloudservicename].cloudapp.ne
t:8080");
this._httpConfiguration.Routes.MapHttpRoute(
name: "ValueApi",
routeTemplate: "api/{controller}",
defaults: new { controller = new ValuesController() });
this._httpServer = new
HttpSelfHostServer(this._httpConfiguration);
return base.OnStart();
}