How To Create a Microsoft Azure-Based MVC Application
「クラウド」は、しばらく前から流行語になっています。しかし、開発者としてのあなたにとって、それはどのような意味を持つのでしょうか?まず、クラウド用には、すでにオンプレミス アプリケーション用に記述しているコードと大きく異なるコードを記述する必要はありません。
「クラウド」は、しばらく前から流行語になっています。しかし、開発者としてのあなたにとって、それはどのような意味を持つのでしょうか?まず、クラウド用には、すでにオンプレミス アプリケーション用に記述しているコードと大きく異なるコードを記述する必要はありません。
あなたがすでにMVCアプリケーションに精通していると仮定しましょう。それが本当なら、この投稿では、クラウド向けの構築が他の開発とそれほど変わらないことを示すことに焦点を当てます。段階的なアプローチに従い、クラウド(データとアプリケーションの両方)で完全にホストされるエンドツーエンドのMVCアプリケーションを作成します。
SQL Azure でのデータベースの設定
まず、クラウド上にデータベースを設定します。ここでは、SQL Azure をクラウド プラットフォームとして使用し、School データベースを作成してみましょう。これを Azure で作成するには、次のことを行う必要があります。
- Login to Microsoft Azure portal
- サイド・タブから、「SQL DATABASES options」を選択します
- 下部にある[新規]ボタンをクリックします

ここから、新しいデータベースを作成するオプションが表示されます。作成するには、次の情報を提供する必要があります。
- データベースの名前。ここでは、Microsoft が提供する School データベースを使用するため、データベースの名前として "School" を指定してください。
- データベースを作成する Azure サブスクリプションを選択します。
- 既存のサーバを選択するか、新しいデータベースサーバを作成できます。新しいデータベースサーバーを作成するには、リージョン、ログイン名、パスワードなどの情報を提供する必要があります。

[SQL データベースの作成] オプションをクリックすると、School データベースと新しいデータベース サーバーが作成されます。データベースが正常に作成されたら、ローカルの開発用コンピューターを SQL Azure データベース サーバーに接続できるように、データベース サーバーのファイアウォール規則を構成する必要があります。ファイアウォール規則を構成するには、[この IP アドレスの Windows Azure ファイアウォール規則を設定する] をクリックします。

ここでは、現在の IP アドレスが既存のファイアウォール規則に追加されていないという情報が表示されます。「はい」をクリックして、現在のIPアドレスをデータベースサーバーの既存のファイアウォールルールに追加します。

次に、新しく作成したクラウド データベースを SQL Server Management Studio から接続して、スクリプトを実行してデータを含むテーブルを作成できるようにします。これを行うには、SSMS を起動し、次の情報を提供する必要があります。
- SQL Azure データベース サーバーの名前。ポータルでデータベース サーバー名を見つけることができます。
- Choose authentication as SQL Server authentication
- ユーザー名とパスワード

SQL Azure データベース サーバーへの接続が成功すると、次に示すように SSMS で接続を表示できるようになります。

Microsoft が提供する School データベースを使用して、テーブルとデータを作成します。ローカル データベース サーバーで指定されたスクリプトから作成された学校データベースは既にあるため、次に、SQL Azure データベース サーバーで実行できるスクリプトを作成する必要があります。これを作成するには、データベースを右クリックして [タスク] を選択し、[スクリプトの生成] を選択します。 スクリプト生成ウィンドウで、[データベース全体とすべてのデータベース オブジェクトのスクリプト作成] を選択します。
![In the generate script window, select Script entire database and all database objects. スクリプト生成ウィンドウで、[データベース全体とすべてのデータベース オブジェクトのスクリプト作成] を選択します。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/6011.7.jpg)
次の画面で、[詳細設定]オプションをクリックします。
![On the next screen, click on the Advanced option. 次の画面で、[詳細設定]オプションをクリックします。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/4341.8.jpg)
「詳細」ウィンドウで、次の値を変更します。
スクリプト化するデータの種類:スキーマとデータ
Script for database engine type: SQL Azure database

新しいクエリウィンドウに保存するオプションを選択し、[次へ]をクリックします。生成されたスクリプトが作成され、SSMS 内の新しいクエリ ウィンドウで開かれます。 SQL Azure データベース接続を選択し、スクリプトを実行します。 テーブルとデータが、SQL Azure データベース サーバー上に存在する School データベースに作成されていることがわかります。

クラウド上にある学校のデータベースを作成しました。次のセクションでは、クラウドデータベースを使用してMVCアプリケーションを作成します。
MVC アプリケーションの作成
このセクションでは、Azure Web サイトで公開する MVC アプリケーションを作成して設定します。これを行うには、MVC テンプレートを選択します。

このアプリケーションには認証は必要ありません。これを設定するには、[認証の変更] オプションをクリックし、次に示すようにダイアログボックスで [認証なし] を選択します。
![To configure this click on the Change Authentication option, and in the dialog box select No Authentication as shown これを設定するには、[認証の変更] オプションをクリックし、ダイアログボックスで [認証なし] を選択します(図を参照)。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/6087.12.jpg)
アプリケーションをクラウドでホストしたいと考えています。正確には、アプリケーションは Azure Web サイトでホストされます。これを構成するには、[クラウドでホスト] チェック ボックスをオンにし、ドロップダウンから [Web サイト] を選択します。
![select the Host in the cloud check box, and from the drop down, choose Web Site. [クラウドでホスト] チェック ボックスをオンにし、ドロップダウンから [Web サイト] を選択します。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/4846.13.jpg)
次に、アカウントの認証を求められます。 ユーザー名とパスワードを入力して、自分自身を認証します。

次の画面では、次の構成を行う必要があります。
- サイト名。この名前は、Azure サーバーでホストされている場合に、アプリケーションにアクセスするための URL として使用されます。
- リージョン: アプリケーションがホストされる Azure サーバーのリージョン。
- データベース・サーバ。この例では、School データベースが存在するのと同じデータベース サーバーを選択します。
- データベース・サーバに接続するためのパスワード。

Azure サービスとデータベース サーバーでの認証が成功すると、アプリケーションの準備ができたことを示すメッセージが Visual Studio に表示されます。

アプリケーションのビルド
現在、データベースを設定し、Azure Web サイトでホストされる MVC アプリケーションを作成しました。それでは、先に進んでアプリケーションをビルドしましょう。
Adding the data model
まず、SQL Azure でホストされている School データベースを使用してデータ モデルを作成します。Entity Data Model を使用して ADO.NET モデルを作成します。MVC プロジェクトにモデルを作成するには、Infrastructureという名前のフォルダーを作成します。インフラストラクチャフォルダを右クリックし、[新しい項目の追加]を選択します。[新しい項目の追加] ダイアログ ボックスで、[データ] タブから[エンティティ データ モデル] を選択し ADO.NET SchoolModelという名前を付けます。
![Add New Item dialog box, select ADO.NET Entity Data Model from the Data tab and name it SchoolModel. [新しい項目の追加] ダイアログ ボックスで、[データ] タブから [エンティティ データ モデル] を選択し ADO.NET SchoolModel という名前を付けます。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/0636.17.jpg)
次の画面で、[データベースから EF デザイナー] オプションを選択します。
![On the next screen, select the EF designer from database option. 次の画面で、[データベースから EF デザイナー] オプションを選択します。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/1207.18.jpg)
[新しい接続] をクリックし、新しい接続ダイアログ ボックスで次の情報を入力します。
- SQL Azure データベース サーバー名。このサーバーは前のセクションで作成しました
- Select SQL Server Authentication option
- SQL Azure データベース サーバーのユーザー名とパスワードを入力します
- ドロップダウンから School データベースを選択します
![Click on New Connection, and in the new connection dialog box, provide the following information [New Connection] をクリックし、[New Connection] ダイアログボックスで次の情報を入力します](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/1614.19.jpg)
次のダイアログ ボックスで、[はい] オプションを選択し、機密データを [接続文字列] に含めて、接続文字列の既定の名前のままにします。
![Yes option, include the sensitive data in the Connection string, and leave the default name for the connection string. [はい] オプションを選択し、機密データを [接続文字列] に含め、接続文字列のデフォルト名のままにします。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/3757.20.jpg)
ここでは、Personテーブルを操作します。したがって、[人]チェックボックスをクリックし、他のチェックボックスはデフォルトのままにします。
![So click on the Person check box and leave the other checkboxes to default. したがって、[人]チェックボックスをクリックし、他のチェックボックスはデフォルトのままにします。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/0121.21.jpg)
「Finish」をクリックすると、データモデルが以下のように作成されます。

MVCアプリケーションでデータモデルを作成し、追加することに成功しました。SchoolModel が SQL Azure のクラウド データベースに接続されました。
読み取りおよび書き込み操作によるコントローラーの追加
次に、Entity フレームワークを使用して、ビューを持つコントローラーを追加します。MVC スキャフォールディングを使用して、Person テーブルで CRUD 操作を実行するビューを作成します。コントローラーを追加するには、コントローラーフォルダーを右クリックし、次に示すようにEntity Frameworkオプションを使用して、MVC 5 Controller with viewsを選択します。

次のダイアログボックスでは、モデルとコンテキストクラスを選択する必要があります。ここでは、モデル クラスとして Person を選択し、DataContext クラスとして SchoolEntities を選択します。データベース操作に対応するビューを作成するには、他のチェックボックスがオンになっていることを確認します。

この手順では、person テーブルに対する CRUD 操作のコントローラーとビューを作成しました。ソリューション エクスプローラーには、次のファイルがあるはずです。

この時点で、先に進んでアプリケーションを実行すると、SQL Azure に存在する person テーブルからデータが取得されます。また、新しいデータを作成したり、データを編集および削除したりすることもできます。

アプリケーションの没入感を高める
この例では、ホーム、バージョン情報、連絡先ビューは必要ありません。また、アプリケーションのベースURLに人のリストが必要だとします。
まず、Home コントローラーを削除し、View フォルダー内の Home サブフォルダーを削除し、layout.cshtml ファイルで div をnavbar-headerクラスでコメント化します。ホームコントローラーとビューを削除したら、次にフォルダーからRouteConfig.csを開きApp_Start以下に示すように、ルート内のデフォルトのコントローラーをSchoolに変更します。

これで、アプリケーションの作成は完了です。F5 キーを押して、アプリケーションをローカルで実行およびテストします。次に示すように、アプリケーションが実行されていることを確認できます。

アプリケーションの公開
アプリを公開するには、プロジェクトを右クリックして [公開] をクリックします。接続ダイアログボックスで、値を検証し、[次へ]をクリックします。
![In the connection dialog box, validate the values and click on next. 接続ダイアログボックスで、値を検証し、[次へ]をクリックします。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/2768.29.jpg)
設定ダイアログボックスで、データベースに対して SchoolEntities 接続文字列を選択し、[次へ] をクリックします。
![In the settings dialog box, for the database, select the SchoolEntities connection string and click on next. 設定ダイアログボックスで、データベースに対して SchoolEntities 接続文字列を選択し、[次へ] をクリックします。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/0121.30.jpg)
最後に、[発行] をクリックして、アプリケーションを Azure Web サイトに発行します。
![Finally, click on publish to publish the application in the Azure web site. 最後に、[発行] をクリックして、アプリケーションを Azure Web サイトに発行します。](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/4331.31.jpg)
エラーが発生した場合は、管理ポータルを開き、データベース サーバーの [許可されたサービス] で [Windows Azure サービス] オプションが [はい] に設定されているか、設定されていないかを確認できます。次に示すように、Yesに設定する必要があります。
![It should be set to Yes as shown 次に示すように、 [はい] に設定する必要があります](/community/cfs-filesystemfile.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/dhananjay_5F00_kumar.Azure/5736.32.jpg)
結論
これで、Azure WebサイトでホストされているMVCアプリケーションからCRUD操作を実行し、SQL Azureでホストされているデータベースにアクセスできるはずです。この投稿では、次のことを学びました。
- SQL Azure でのデータベースの作成
- ローカル データベース サーバーから SQL Azure データベース サーバーへのデータの移行
- エンティティフレームワークを使用したMVCアプリケーションでのクラウドからのデータの使用
- Azure Web サイトで MVC アプリケーションをホストする
- アプリケーションを Azure Web サイトに発行します。
この記事がお役に立てば幸いです–読んでくれてありがとう、そして幸せなコーディング!
