そらのむこう から 呼びかける声 どうか気づいて その顔上げて〜♪ (Azure対応メモ)

っということで、既存のASP.NET(ASP.NET MVC) + SQL Serverのアプリケーションを、Windows Azure + SQL Azureで動作させるためのメモ(・∀・)

Webアプリケーションプロジェクト

既存のソリューションとは別に、Cloud Service用のソリューション/プロジェクトを作って、そこに既存のWebアプリケーションプロジェクトを追加する形で。
なお、Azure用のソリューションへWebアプリケーションを追加する前に、csprojをテキストとして開いてWebの記述を追加しておく。

<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <RoleType>Web</RoleType>
    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
...

ソリューションへプロジェクトを追加したら、Webアプリケーションの参照設定でMicrosoft.ServiceHosting.ServiceRuntime.dllを追加。


次に、ソリューションエクスプローラのWeb Roleプロジェクトから、Rolesを選択してコンテキストメニューの[Add]-[Web Role Project in solution...]を選択して、ソリューションに追加したWebアプリケーションプロジェクトを選択して追加。


これで既存のASP.NETアプリケーションをAzureで動かす設定はOKです(・∀・)

SQL Server

SQL Azure Migration Wizardを使って、ローカルのSQL Serverに構築したデータベースからSQL Azure用のDDLを作成する形で。


ちなみに、テストデータの作成のため、ローカルからデータの挿入をやってみたんだけど、死ぬほど遅いですね(゚Д゚;)
ローカルなら10分くらいで終わるものが、何時間かかるのか…。
Azure上にホストしたWebアプリからの操作は別に遅くないので、ネットワーク的な要因が大きいんですかね(・ω・)?


なお、コードについてはLINQ to SQLを使ったデータアクセスそのままで、ConnectionStringを変えただけで問題無く動作(`・ω・´)
まあ、SQL Azureはフルテキストインデックスに対応していないので、そこの処理は書き直す必要があるんだけど(´д`)

メール送信

メール送信時のSMTPサーバについては、とりあえずGMailのアカウントを使用して動作確認する形で。
なお、SmtpClientでGMailからメールを送信する時はこんなんで。

SmtpClient client = new SmtpClient();
client.Host = "smtp.gmail.com";
client.Port = 587;
client.Credentials = new NetworkCredential( "machi.pon@gmail.com", "xxxxx" );
client.EnableSsl = true;

あと、enableNativeCodeExecutionをtrueにしておかないと怒られる(・ω・)?

<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="MailTest" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
  <WebRole name="WebRole1" enableNativeCodeExecution="true">
...


っというわけで、ASP.NET + SQL Serverのアプリケーションを、ほぼ修正無しで、Windows Azure + SQL Azureへ持って行けたのでした(`・ω・´)