かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Windows Azureの新機能Webサイトを試してみた

先日発表されたWindows Azureの新機能!wktkする内容ばかりでした!概要は以下の@ITの記事にまとまってます。

IaaS関連の機能が目玉!!さらにはVPNまでできちゃう!!素敵なことこの上ないですが、生憎私はサーバーを立ててOSいじってウハウハするというところに、あまり楽しみを見いだせない人なので、今回の機能の中ではWebサイトが一番気になってます。だって10秒でWordPressのサイトとか作れるんですよ?しかも、共有領域で動くアプリなら10サイトまで今のところ無料とか。胸があつくならなくて何が熱くなるんでしょう。

ということで、簡単にASP.NET MVCのアプリをでぷろーい!してみました。一番お手軽なWebデプロイです。作ったASP.NET MVCのアプリはシンプルで晒すのも恥ずかしいですが空のアプリケーションを作ってそこに以下のようなHomeControllerクラスを作りました。

using System;
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            var value = this.HttpContext.Session["value"] as string;
            if (value != null)
            {
                ViewBag.Message = value;
            }
            else
            {
                ViewBag.Message = "No session";
            }

            return View();
        }

        [HttpPost]
        public ActionResult Session()
        {
            this.HttpContext.Session["value"] = DateTime.Now.ToString();
            return Redirect("Index");
        }
    }
}

セッションに値をつめるSessionアクションと、セッションに値があれば、それをViewBagに詰め込むIndexアクションです。Index.cshtmlは以下のような感じにしてます。

@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <h1>Index</h1>
    <div>
        @Html.ActionLink("Replay", "Index")
        @using(Html.BeginForm(new { controller = "Home", action = "Session" }))
        {
            <input type="submit" value="post" />
        }
    </div>
    <div>
        <p>@ViewBag.Message</p>
    </div>
</body>
</html>

アクションを呼び出すリンクとフォームがあって、ViewBag.Messageを表示するだけのシンプルなページです。

実行してpostボタンを押して何回かReplayリンクを押した結果の画面を以下に示します。セッションの値がちゃんと画面に出てますね!

舞台はAzureへ

なんちゃってアプリができたら次はAzureのほうに行きます。新しい管理ポータルでWEB SITESから、CREATE A WEB SITEを選択します。

URLを入力してCREATE WEB SITEをクリックします。ボタンがいちいちMetroスタイルですね!いいね!

作成が早い早いといわれてましたが本当に早くて5秒程度でできあがりました。

作成したWebサイトから、Download publish profileリンクでWebデプロイの設定が書かれたファイルがダウンロードできます。

続けてプロジェクトを発行します。Importボタンを押して先ほどダウンロードしたファイルを取り込みます。取り込んで接続のテストボタンを押してうまくいったらOKです。

今回はDBも何も使ってないのでそのまま華麗に発行しちゃいましょう!10秒くらいでアプリケーションが起動します。これもうAzureに乗ってるって凄くないですか?

しかも、簡単に3インスタンス構成とかできちゃう。

その状態でアプリを動かしてもまるで何事もなかったかのように動く。InProcをセッションに指定してるから、3インスタンス構成にしたらセッションが途切れるという予測だったのに裏切られた・・・!まさか、それなりに負荷かけないと、3インスタンス立ち上がらないとかなのかなぁ?

まとめ

手軽に、素早く、そしてスケール可能なアプリケーションを簡単に構築できるWebサイト機能って素敵じゃないですか?Webロールが何のためにあったのか!?そういう突っ込みも出てきそうですが、WebサイトはWebロールよりもさらに自由度を犠牲にしたぶんお手軽度を上げてるような感じです。
あと、Webロールは最初から共有領域じゃなくて自分専用の仮想マシンにアプリをデプロイできるので性能面でもWebサイトより安定してると思われ。

ということで、WordPressでBlog立てたい!とかちょっとしたWebサイトを公開したい!という人には割とおすすめな選択肢の1つになるんじゃないかと思われるWebサイトを軽く使ってみました。以上です。