ライブラリアセンブリのMonoコレクション
ここでは、Monoが.NETプログラムの実行用に提供するライブラリを詳しく説明します。
Base Class Library(BCL)とそれ以上のもの
BCLとは、.NET Frameworkの標準ライブラリを構成する一群のDLLに付けられた名前です。これらのライブラリアセンブリはバインドメカニズムによってすべての言語で使用できます。MonoはBCLを実装しており、これはDebianパッケージlibmono-system2.0-cilでインストールできます。このパッケージでは、BCL、JIT、Mono Security Libraryの間の接着剤となるMono Core Library(mscorlib.dll)もインストールされます。
Monoはプログラムで必要なライブラリアセンブリをどこで探すのでしょうか。まず現在のディレクトリを探し、それからMONO_PATH環境変数で指定されているディレクトリを探します。そして最後の手段としてGlobal Access Cache(GAC)を探します。GACはライブラリアセンブリの中央リポジトリであり、「DLL地獄」と呼ばれる昔からのMicrosoft問題を解決するように設計されています。この機能によって、開発者は名前が同じでバージョン番号が異なるライブラリを保持することができます。GACは主として開発チーム用のツールであり、その主な目的はユーザーたちがアセンブリを共有できるようにすることです。
GACはアセンブリの厳密名(strong name)という概念を導入し、引き続きサポートしています。厳密名は単純ファイル名、バージョン番号、カルチャ(オプション)、および公開キーから成ります。Debianパッケージmono-gacはgacutilコマンドラインユーティリティをインストールします。gacutilは.NETのhomonymコマンドのすべての機能を模倣します。
GTK#とWindows Forms
おそらくMonoプログラムにはGUIが必要になるでしょうし、リッチで効果的なユーザーインターフェイスを実装するにはグラフィックフレームワークが必要です。Monoにはオプションがいくつもありますが、ベストなのはGTK#です。これはGNOMEプロジェクトの基礎になっているGTK+GUIライブラリのMonoバインディングです。
Debianでは、GTK#プログラムのコンパイルに必要なすべてのパッケージがgtk-sharp2というメタパッケージに含まれています。/usr/share/gtk-sharp2-examplesディレクトリには興味深い例もいくつか入っています。Mono for Windowsインストールセットアップでは、すべてのGTK#ライブラリアセンブリもインストールされ、GTK#プログラムがWindowsで動作するように完全な互換性が確保されます。
Windows Forms
Monoチームは.NET Windows Formsライブラリアセンブリの実装を妨げていた障害物のほとんどを除去しました。それらのインストールにはパッケージlibmono-winforms2.0-cilを使用します。Windows Formsプログラムをコンパイルするときは、-pkg:dotnetオプションを必ず使用してください。
Web開発とASP.NET
パッケージlibmono-system-web2.0-cilを使用すると、ASP.NETでプログラムすることができます。その場合、ASP.NETアプリケーションを実行するための選択肢が2つあります。1つはApacheで、こちらはmono-server-apacheをインストールします。もう1つはxspという軽量Webサーバーで、こちらはmono-xspをインストールします。
データベースプログラミング
MonoはADO.NET Frameworkとこのフレームワークでのデータベースへの接続もサポートしています。とりわけ、libmono2.0-cilパッケージのMono.Data.dllはProvider Factory and Data Tools for Mono ADO.NETを提供します。MonoはADO.NET Frameworkを使ってオープンソースデータベースとやりとりすることができます。たとえば、MySQL ABのMySQL Connector/NetはMySQL用として推奨される.NETとMonoのデータプロバイダです。
