C# と .NET Framework 4 を主にWindows Formのアプリケーション開発について

Mono (もう一つの .Net Framework実装) Mono (もう一つの .Net Framework実装)

mono関連の記事のまとめページ。

 

monoとは

monoは、Microsoft社が開発したアプリケーションの開発及び実行環境である .NET Framework の互換環境で、現在はNovelが主導している。

.NET Framework 自体はWindows XP以降のWindowsに対応しているが、monoはそれに加えて、Linux, FreeBSD, Mac OS X などで動作する。

 

互換性は?

全般的には、Windows上のVisual Studioでビルドした実行モジュール(EXEファイル)をそのまま実行開始できる程度の互換性。
互換性が無い部分では例外等が発生する。

CLS準拠(CLSCompliantAttribute(true)が付いている)アセンブリであれば、そこそこ動作する。

 

また、FileSystemの違い等を最低限意識してコーディングしておく必要がある。
たとえば、string.Format(@"c:\abc\{0}", fileName) とかはダメ。 Path.Combine等で結合等の配慮は必要だ。
もちろんP/Invokeはだめ。

つまり、マルチ プラットフォームを意識したコーディングをする必要がある。

公式サイトの互換性ページは⇒ http://www.mono-project.com/Compatibility

 

Mono 2.8での、非互換のフレームワーク

  • WPF
  • EntityFramework
  • WF

Mono 2.8での、制限付のフレームワーク

  • WCF

 

WinForm等のGUIの互換性

微妙かも知れない。
簡易なWinFormのプログラムをVisualStudio上で作成し、DebianのGNOME上で動作させた時の再現性や速度面は「一応動く」という感じで快適というわけにはいかない。

ただし、これは仮想マシン上で行ったテストなので実マシンでは異なるかもしれない。

 

WPFの互換性

WPFについては現在のところ対応する予定が無いようだ。

 

ASP.NETの互換性

Apache2とmod_monoで動作させることが出来る。
Mono 2.4になって、かなり互換性が取れてきて安定的に動くようになってきた。

 

既存プログラムの互換性を確認する方法は?

MoMA(Mono Migration Analyzer)と呼ばれるプログラムが公開されています。
既存プログラム(アセンブリ)を指定して、mono上での動作可能性をレポートしてくれます。

MoMAは、.NET Framework 2.0以降か、Mono 1.2以降で動作する。

 

mono公式サイト

monoってなに?という方は → 「Mono (ソフトウェア) - Wikipedia

Main Page - Mono

monoプロジェクトのトップページ

"Mono" の最新のエントリー

トラックバックURL

このエントリーのトラックバックURL:
http://www.cs-dotnet.com/cgi-bin/mt-tb.cgi/279

Comments

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)