CodeZine(コードジン)

特集ページ一覧

Full IISでWebロールを使いこなそう

Windows Azure新機能チュートリアル(3)

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2011/06/09 14:00

ダウンロード sample.zip (1.1 MB)

目次

複数サイトと仮想アプリケーションの構成

 ここでは、複数サイト、仮想アプリケーション、仮想ディレクトリの構築方法を説明します。サンプルファイルのMultiSitesフォルダにソリューションが格納されています。

 ソリューションの構成は、図3の通りです。ASP.NET Webロールプロジェクトが1つと、ASP.NET Webアプリケーションプロジェクトが2つ存在します。本サンプルでは、2つのWebアプリケーションプロジェクトを、それぞれ複数サイト、仮想アプリケーションとして構成します。また、Webロールプロジェクトに存在するImageフォルダを仮想ディレクトリとして構成し共用してみます。

図3 ソリューションの構成
図3 ソリューションの構成

 ソリューションエクスプローラーからサービス定義ファイル(ServiceDefinition.csdef)を選択して開きます。サービス定義ファイルに、太字部分がサンプルでの追加部分です(リスト3)。

リスト3 Sites要素(ServiceDefinitison.csdef)
  <WebRole name="WebRole1" vmsize="ExtraSmall">
    <Sites>
      <Site name="Web">                                                                          *1
        <VirtualApplication name="VirtualApplication" physicalDirectory="../WebApplication2"> *2
          <VirtualDirectory name="Image" physicalDirectory="../WebRole1/Image" />              *3
        </VirtualApplication>
        <Bindings>
          <Binding name="Endpoint1" endpointName="Endpoint1" />
        </Bindings>
        <Site name="WebApplication1" physicalDirectory="../WebApplication1">                   *4
        <VirtualDirectory name="Image" physicalDirectory="../WebRole1/Image" />                *5
        <Bindings>
         <Binding name="Endpoint1" endpointName="Endpoint2" />                                 *6
        </Bindings>
      </Site>
      </Site>
    </Sites>
    <Endpoints>
      <InputEndpoint name="Endpoint1" protocol="http" port="80" />
      <InputEndpoint name="Endpoint2" protocol="http" port="8080" />                          *7
    </Endpoints>
    …
</WebRole>

 *1はデフォルトのWebサイトです。*2は、デフォルトのWebサイト配下に、WebApplication2プロジェクトを仮想アプリケーションとして構成しています。physicalDirectory属性には、WebApplication2のプロジェクトフォルダを指定しています。

 *3と*5は、仮想フォルダを指定しています。physicalDirectoryには、WebRole1プロジェクトのImageフォルダを指定しており、このフォルダが共用されます。

 *4は、WebApplication1をもう1つのWebサイトとして構成しています。physicalDirectoryには、WebApplication1プロジェクトのプロジェクトパスを指定しています。複数のサイトを構成する場合、*6のBinding要素が必須です。対応する*7のInputEndpoint要素で、プロトコルと使用するポート番号を指定します。

 本サンプルでは、サイトの場所にプロジェクトフォルダを直接指定しています。このように指定すると、不要なソースファイル等もパッケージ化して配置されてしまうので注意してください。実際には、いったんファイルシステムになどに発行を行ない、不要なファイルが含まれないフォルダを指定します。

 各サイトに違いが分かるように、Default.aspxには、サイト名、仮想パス、要求されたホスト名を表示します(リスト4)。WebRole1、WebApplication1、WebApplicaton2はすべて同じ内容です。

リスト4 Webフォーム(Default.aspx.cs)
<%@ Import Namespace="System.Web.Hosting" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <p style="font-size: 150%; font-weight: bold">
        サイト名 = <asp:Label ID="Label1" runat="server" Text="<%# HostingEnvironment.SiteName %>" /><br />
        仮想パス = <asp:Label ID="Label2" runat="server" Text="<%# HostingEnvironment.ApplicationVirtualPath %>" /><br />
        要求されたホスト名 = <asp:Label ID="Label3" runat="server" Text="<%# this.Request.Url.Host %>" />
    </p>
    <p>
        <asp:Image ID="Image1" runat="server" ImageUrl="~/Image/WindowsAzure.png" Width="300" />
    </p>
    <script runat="server">
        protected void Page_Load(object sender, EventArgs e){
            this.DataBind();
        }
    </script>
</asp:Content>

 Windows Azureに配置して実行結果を確認してみましょう。各URLにアクセスすると、Sites要素で定義した構成でアクセスできることが確認でき、イメージも共用できていることが確認できます(図4)。

図4 複数サイト、仮想アプリケーションの実行結果
図4 複数サイト、仮想アプリケーションの実行結果

 リモートデスクトップ接続し、IISマネージャ確認するとIISのサイトが構成されていることが確認できます(図5)。

図5 IISマネージャにおけるIIS構成
図5 IISマネージャにおけるIIS構成

  • LINEで送る
  • このエントリーをはてなブックマークに追加

バックナンバー

連載:Windows Azure新機能チュートリアル

もっと読む

著者プロフィール

  • WINGSプロジェクト statemachine(statemachine)

    <WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂...

  • 山田 祥寛(ヤマダ ヨシヒロ)

    静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。 主な著書に「入門シリーズ(サーバサイドAjax/XM...

あなたにオススメ

All contents copyright © 2005-2022 Shoeisha Co., Ltd. All rights reserved. ver.1.5