そらのむこう から 呼びかける声 どうか気づいて その顔上げて〜♪ (Azure対応メモ)
っということで、既存のASP.NET(ASP.NET MVC) + SQL Serverのアプリケーションを、Windows Azure + SQL Azureで動作させるためのメモ(・∀・)
Webアプリケーションプロジェクト
既存のソリューションとは別に、Cloud Service用のソリューション/プロジェクトを作って、そこに既存のWebアプリケーションプロジェクトを追加する形で。
なお、Azure用のソリューションへWebアプリケーションを追加する前に、csprojをテキストとして開いて
<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へ持って行けたのでした(`・ω・´)