發布專案至 Cloud Service

image

webRole

加入 Azure 雲端服務專案

在 MVC 專案上右鍵 > 加入 Azure 雲端服務專案。

發佈到 Windows Azure

MVC 專案上面右鍵 > 發佈到 Windows Azure。

選擇登入以下載認證 > 再匯入下載的認證。

image

就可以利用 Visual Studio 發布專案至 Windows Azure Cloud Service 了。

image

Reference

http://msdn.microsoft.com/en-us/magazine/jj618299.aspx

http://www.windowsazure.com/en-us/manage/services/cloud-services/how-to-create-and-deploy-a-cloud-service/

http://msdn.microsoft.com/en-us/library/windowsazure/ff683672.aspx

http://msdn.microsoft.com/en-us/library/windowsazure/hh403979.aspx

SQL Database Migration Wizard 發布本地資料庫至 Window Azure SQL

SQL Database Migration Wizard

先到 http://sqlazuremw.codeplex.com/ 下載 SQL Database Migration Wizard 這個工具,它包含了兩個主要的功能

  1. 將資料結構匯出成 Azure SQL 版本相容的 T-SQL 語法,可以直接在 SSMS 執行。
  2. 將資料利用 BCP 匯出成檔案,同樣也可以用 BCP 匯入。

*BCP 的介紹

解壓縮之後直接執行

image

輸入想要匯出的資料庫連線資訊

image

image

如果要一併匯出 BCP 檔案的話要選擇包含資料。

image

最後就匯出完成了。

image

SSMS 建立 Table Schema

接下來用匯出的 SQL 建立 Azure SQL 的資料庫結構

image

直接用 Management 連線到 Azure SQL 並且將 SQL 指令貼上執行就可以了。

BCP 匯入資料

如果當初有選擇匯出資料的檔案,則在 T-SQL 最下面會看到類似 command 的註解。

image

這邊的 Command 並不是在 SSMS 這邊執行的。

我的做法是直接複製 BCP 輸出彙總。

image

修改掉幾個部分

out 關鍵字改為 in (out 為匯出 in 為匯入)

-S 之後的 server 名稱改為 Azure SQL Server 名稱

-U 之後的 username 改為 Azure SQL Server username

-P 之後的 password 改為 Azure SQL Server password

直接貼到本機 cmd.exe 執行

image

執行完之後資料就完整匯入了。

Reference

http://sqlazuremw.codeplex.com/

http://msdn.microsoft.com/en-us/library/windowsazure/jj156153.aspx

Windows Azure SQL Database

建立 Windows Azure SQL Database

一樣來到 Create New 的地方選擇 SQL Database

輸入資料庫名稱,登入帳號,密碼,確認密碼就OK了

image

連線到資料庫

進入 SQL Database 管理介面這邊就可以直接顯示需要的 connection string。

image

image

*目前的步驟還不能夠直接連線,會得到一個拒絕連線的結果,因為預設是會阻擋外部 IP 的。

開啟防火牆

進入 Design Your Database 的時候會得到一個警告,提示說目前 IP 是在防火牆外,是否要允許這個 IP 連線。

image

image

直接選是的話就可以用管理工具連線了。

image

也有 Silverlight 的線上管理工具可以使用。

image

Reference

http://www.windowsazure.com/en-us/develop/net/how-to-guides/sql-database/#PreReq2

Windows Azure 用程式存取 BLOB Storage

加入 Windows Azure 雲端服務專案

在專案右鍵 > 加入 Windows Azure 雲端服務專案

幫現有的 ASP.NET MVC 4 加入 Window Azure 專案

image_thumb[14]

設定 Storage 連線

image

image

這邊的設定是本機 debug 的時候他會建立一個虛擬的 Storage 可以在開發的時候使用。

如果要使用本機的 Storage 的話使用

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
CloudConfigurationManager.GetSetting("StorageConnectionString"));

或是使用

CloudStorageAccount storageAccount = CloudStorageAccount
.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);

直接讀取 Config 設定

image

接下來在原本專案的 config 加入

  <connectionStrings>
<add name="StorageConnectionString"
connectionString="DefaultEndpointsProtocol=https;AccountName=[AccountName];AccountKey=[AccountKey]" />
</connectionStrings>

上傳 BLOB

如果 Container 設定是 public 只要上傳之後就可以直接從 Url 讀取了

        [AllowAnonymous]
public virtual ActionResult CreateImageUploadFile(HttpPostedFileBase imagePathFileUpload)
{
try
{
//檢查允許的附檔名
string[] allowExtensions = new string[] { "jpg", "jpeg", "gif", "png" };
WebImage picture = WebImage.GetImageFromRequest();
if (false == allowExtensions.Contains(picture.ImageFormat.ToLower()))
{
throw new ArgumentException("不支援上傳" + picture.FileName + "檔案格式不合");
}

string realFileName = Path.GetFileName(imagePathFileUpload.FileName);
//產生一組名稱
string uid = Regex.Replace(Guid.NewGuid().ToString(), "-", "").ToLower();
CloudStorageAccount storageAccount = CloudStorageAccount
.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference("uploadsimages");
//如果 container 不存在就建立
container.CreateIfNotExist();
CloudBlockBlob blockBlob = container.GetBlockBlobReference(uid + ".png");
//設定 contentType 並上傳
blockBlob.Properties.ContentType = "image/png";
blockBlob.UploadByteArray(picture.GetBytes());

return Json(new { msg = "上傳檔案成功", filename = blockBlob.Name, realFileName = realFileName }, "text/html");
}
catch (Exception ex)
{
return Json(new { msg = "上傳檔案失敗", error = ex.Message }, "text/html");
}
}

 

下載 BLOB

在某些時候或許不希望公開 container 而希望能夠透過一些驗證再讀取

/// <summary>
/// 顯示已經上傳的圖片
/// </summary>
/// <returns></returns>
[AllowAnonymous]
public ActionResult ShowImageUploadFile(string filename, int? width, int? height)
{
//可以在這邊判斷讀取權限
//利用連線字串取得連線
CloudStorageAccount storageAccount = CloudStorageAccount
.Parse(ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString);
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
//取得 Container
CloudBlobContainer container = blobClient.GetContainerReference("uploadsimages");
//取得 BLOB
CloudBlockBlob blockBlob = container.GetBlockBlobReference(filename);
using (var fileStream = new MemoryStream())
{
blockBlob.DownloadToStream(fileStream);
WebImage image = new WebImage(fileStream);
return File(image.GetBytes(), blockBlob.Properties.ContentType);
}

}

Reference

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/#header-4

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/#header-5

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/#header-6

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/#header-7

Windows Azure 使用 BLOB Storage 儲存靜態檔案

關於 BLOB Storage

BLOB 是 binary large object,也就是把物件用 binary 存下來。在 Windows Azure 網站的空間只允許 1GB 而已,如果有大量的圖檔或多媒體檔案的話很快就爆炸了,解決的方案就是 BLOB Storage 。

blob1

建立 Windows Azure Storage

一樣到 Portal 中 Create New 的部分,把 Storage 服務建立起來。

image

geo-replication 是否開啟在定價上是會有差別的

image

手動建立 Container

從 Portal 進入剛剛建立好的 BLOB Storage > CONTAINERS

但是在 Portal 介面的部分只有包含對 Containers 的操作,並不支援 BLOB 操作

image

利用工具直接操作 BLOB

我在這邊使用到的工具是 Azure Storage Explorer,可以對 BLOB 直接操作。

一開始進入的時候會要求輸入 STORAGE ACCOUNT NAME & ACCESS KEY

這都可以在 Portal > Manage Keys 找到

image

Azure Storage Explorer

用工具上傳檔案之後要記得確認 Content-Type 是想要的,如果 png 圖檔是  image/png,就可以直接在瀏覽器開啟圖片了。

*要用瀏覽器直接瀏覽 Container Access 須設定為 public Container

*瀏覽路徑為 http(是否有限定 https )://(Storage).blob.core.windows.net/(Container)/(BLOB) (ex: http://maricoard.blob.core.windows.net/images/test.png)

image

image

Reference

http://www.windowsazure.com/en-us/develop/net/how-to-guides/blob-storage/

http://www.dotblogs.com.tw/regionbbs/archive/2010/03/01/vs2010.and.azure.platform.understanding.blob.storage.service.aspx

http://ithelp.ithome.com.tw/question/10077453

http://gauravmantri.com/2012/05/13/comparing-windows-azure-blob-storage-and-amazon-simple-storage-service-s3summary/

http://www.codeproject.com/Articles/490178/How-to-Use-Azure-Blob-Storage-with-Azure-Web-Sites

http://msdn.microsoft.com/en-us/library/windowsazure/ee691964.aspx

Tool

http://azurestorageexplorer.codeplex.com/

Windows Azure 發佈第一個 ASP.NET MVC 4 專案

Requirement

必須要先安裝 VS 2012 的 Windows Azure SDK

Windows Azure SDK for Visual Studio 2012

進入 Create New

在 Windows Azure Portal 叫出 Create New 選單

直接選擇 Quick Create 設定之後都可以調整

image

Download publish profile

建立完之後在清單上面點擊 Web Site 就可以進入 Dashboard 的部分,右下功能清單就會有 Download publish profile ,方便從 Visual Studio 匯入發佈設定。

image

Import Publish Settings

先假設已經建立好了 ASP.NET MVC 4 專案,從專案 > 發佈進入發佈設定畫面,這時候直接選擇匯入找到剛剛下載的檔案。

image

發佈 ASP.NET MVC 4 專案

匯入完之後可以看到設定檔都已經設定完成了,直接按下發佈。

image

image

Reference

http://www.windowsazure.com/en-us/develop/net/tutorials/get-started/#deploytowindowsazure

Windows Azure 第一次進入 Portal

第一次進入 Portal

Windows Azure 目前也是 Metro 風格的介面了,簡潔的介面確實還蠻討喜的,唯一的問題的會找不到功能,為了怕有這種事情發生 Microsoft 也是有一段小小的教學。

image

Main Menu

右上點選帳號之後會出現右方選單,包含帳號資料以及語言選擇,目前看起來是還不包含中文。

image

Create New

建立新物件則由左下角的 Create New 進入

image

Commands

下方選單也有基本的指令,如果有使用 Windows 8 的話應該是很習慣這種介面。

image

Notifications

一些通知會出現在右下角的位置

image

完成教學

這些步驟都跑完的話才算正式進入 Portal,終於看到 Portal 的畫面了。

image

Windows Azure 帳號申請流程

image

開始申請 Windows Azure 帳號

在這邊可以明顯看到免費的範圍是什麼,要注意的是在建立的時候他也需要一組手機號碼以及信用卡,也明確的說明了免費就是 90天而已。如果只是要測試玩玩而已的要非常小心,等收到信用卡帳單的時候通常已經是第二個月了。

image

確認帳號

在這邊需要需入手機號碼,他會用簡訊送來一組密碼之後再輸入在頁面上,要確認你的手機是有效的才有辦法通過這個步驟。

image

輸入信用卡資訊

必填資訊一目瞭然,信用卡看來是躲也躲不過了。

*這邊輸入完信用卡之後,我收到銀行的簡訊通知扣款 40 元,理應是會再退款回來,目的是確認信用卡是可正常扣款的。

image

完成帳號註冊

三個步驟都跑完的話就建立完帳號了,也會收到相關的 mail 說明了收費範圍。

image

image