いろいろ試したところ、日本語が化ける原因は、.aspxファイルの文字コードにあった。Visual Studio.NETで.aspxファイルを記述すると、シフトJISコードで記述される。これを適当なテキストエディタなどで開き、UTF-8として保存し直せば、画面6のように正しく日本語表示ができるようになる。
ただし、Boolean型のデータにおいて「True/False」が表示されないという問題は直らない。これはプログラム側で対応させるしかないだろう。ちなみにここでは具体例を示さないが、DataGridにデータバインドしているデータベースのデータに日本語が含まれている場合でも、正しく表示されることを確認した。
ただし正しく表示できるのは、SQL Server上で、nvarchar型(Unicodeを示す型)として定義されている場合に限る。varchar型(シフトJISを示す型)で定義された列に日本語を入れると、文字化けする。ソースコードを厳密に追っていないので断言はできないが、Monoの環境では、シフトJISコードを使うとおかしな感じがする。
|
ここまで簡単にMonoがどの程度の互換性をもつのかを見てきたが、Windows Formを使ったアプリケーションは現状では動かしにくいが、ASP.NETやASP.NETがUNIX上で動作するのは、まさに目前と言える。ただし、日本語を必須とする立場では、日本語の挙動が少し不明という問題があったり、OSによっては正しくSQL Serverに接続できないなどの問題が幾つか残っているのも事実だ。
今回は、データベース接続してDataGridコントロールで表示するという例しか見ていないため、果たして、データベースの更新は大丈夫なのか? トランザクションは正しく機能するのか? そもそもXSPやMono自体が安定して動くのか? など、まだまだ調査の余地があるだろう。またパフォーマンスを向上させるために、mod_monoがどの程度の機能を持つのか検討する必要もあると思われる。そのため、すぐに実用的に利用できるかといえば、それは難しいのではないかと言わざるを得ない。
しかしβ3という状況で考えれば、Monoは全般的に、相当良く出来ていると思える。あとは多くの環境で使われて揉まれていけば、よりよい安定したものに仕上がっていくことだろう。現状、ASP.NETはIISで動かすのが主流であるが、将来的には、Apache+mod_monoで動作させる環境も十分に考えられるのではないかと思った次第だ。
記事で使用したサンプル(TestWebApp.lzh)Copyright © ITmedia, Inc. All Rights Reserved.