Shoeisha Technology Media

CodeZine(コードジン)

記事種別から探す

ASP.NET MVC on Mono
――「NerdDinner」をLinux上で動かしてみる

Mono環境でASP.NET MVCの動作確認を行う

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

 ASP.NET MVCのチュートリアルアプリケーション「NerdDinner」を使用して、Linux上のMono環境でASP.NET MVCの基本的な動作確認を行います。必要な修正内容を含め、詳細に解説します。

目次

1. はじめに

 ASP.NET MVCはMicrosoft Public License(Ms-PL)が適用されていて、Mono 2.4.2.1から標準で組み込まれるようになりました。

$ gacutil -l System.Web.Mvc
The following assemblies are installed into the GAC:
System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Number of items = 1

 そうなってくると、Mono環境でASP.NET MVCで作成されたWebアプリケーションが実際に動作するか、確認してみたくなります。ありがたいことに、下記のようなASP.NET MVCチュートリアルおよびその完成アプリケーションが、Webで既に公開されています。

ASP.NET MVCチュートリアル:NerdDinner

チュートリアルの完成アプリケーション「NerdDinner」

 本稿では、NerdDinner 1.0をLinux(Ubuntu 9.04)上のMono(最終的にApache+mod_mono)環境で動作させること、またそのために行った修正について解説します。

NerdDinner
NerdDinner

2. 対象読者

  • ASP.NET MVCについて関心を持っている人
  • Mono環境でASP.NET MVCが動作するか関心をもっている人

3. 必要な環境

 以下の環境で動作確認を行いました(VirtualBox 2.2.4を使用しています)。

ホストOS側

  • OS: Ubuntu 9.04 Desktop
  • Mono 2.4.2.3(XSP、mod_monoを含む)
  • DbLinq
  • MonoDevelop 2.0
  • Apache 2.2
  • SQLite3 3.6.10

ゲストOS側

  • OS: Windows 7 RC
  • SQL Server 2008 Express Edition SP1
  • Visual Web Developer 2008 Express edition
  • ASP.NET MVC 1.0 RTM
  • NUnit Test Project Templates RTM
  • NUnit 2.4.8

環境構築時の注意事項

 Ubuntu 9.04 Desktopは標準でMono 2.0が導入されていますが、ソースからビルドしてMono 2.4.2.3を導入しました(「/opt/mono/2.4.2.3」配下にインストール)。

 ゲストOS側の資源は、ASP.NET MVCプロジェクトの作成、NerdDinnerで使用するDBの内容を調べるのに使用しました。本稿でのNerdDinnerの動作確認自体には必要ありません。

 DbLinqはSQLite、PostgreSQL、MySQL、SQL Server、Oracle、Firebird、IngresといったDBへLINQによるアクセスを可能にするオープンソースプロジェクトです。本稿ではリビジョン:r1208の資源を使用しましたので、ダウンロード方法は次のとおりです。

$ svn checkout -r 1208 http://dblinq2007.googlecode.com/svn/trunk/ dblinq2007-read-only

 本稿では「DbLinq」「DbLinq.Sqlite」「DbMetal」のアセンブリが必要ですので、「ダウンロード先/dblinq2007-read-only/src/DbLinq.sln」をMonoDevelopで開いて、各々ビルドを行いました。

 MonoDevelopからVisual Web Developer 2008 Express editionで作成したASP.NET MVCプロジェクト用ソリューションを開き、ソリューションビューからプロジェクトの[参照]を確認すると、 いくつかのアセンブリがAssenbly not foundとなっています。

プロジェクトの[参照]
プロジェクトの[参照]

 原因はアセンブリが存在しない(「System.Web.Mobile」が該当するが、「System.Web.Mobile」内の資源は使用していないので参照から削除可)、完全修飾名に違いがある(Windowsのアセンブリには「processorArchitecture=MSIL」が付与されているものがある)などの理由から、[参照]の右クリックを行い、[参照アセンブリの編集]から各アセンブリの再設定する必要があります。

 また、GACに存在する「System.Web.Mvc」はアセンブリリストに表示されないので(ASP.NET MVC Supportアドインに含まれる「System.Web.Mvc」は選択しない)、暫定的な処置になりますが、「/opt/mono/2.4.2.3/lib/pkgconfig」ディレクトリに「System.Web.Mvc」用の「.pc」ファイル(例:「system.web.mvc_1.0.pc」)を配置することで、アセンブリリストに表示されるようになるので、それを選択するようにします。

「system.web.mvc_1.0.pc」
Name: System.Web.Mvc
Description: System.Web.Mvc ASP.NET MVC
Version: 1.0.0.0
Libs: -r:/opt/mono/2.4.2.3/lib/mono/gac/System.Web.Mvc/1.0.0.0__31bf3856ad364e35/System.Web.Mvc.dll
参照アセンブリの編集
参照アセンブリの編集

 MonoDevelopのアドインとして、「ASP.NET MVC Support」および「Database」以下を追加しています。

MonoDevelopアドイン
MonoDevelopアドイン

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

著者プロフィール

バックナンバー

連載:Monoでのプログラミング実例集
All contents copyright © 2005-2017 Shoeisha Co., Ltd. All rights reserved. ver.1.5