SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Monoでのプログラミング実例集

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

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

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

 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アドイン

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
4. チュートリアルアプリケーション「NerdDinner」を実行する前に

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Monoでのプログラミング実例集連載記事一覧
この記事の著者

sta(エステーエー)

風来坊blog:sta.blockhead

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4669 2010/01/21 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング