マルチファイルアセンブリのメリットを考察
こんにちは(夜ですが・・・)。先日の MSDN オフラインセミナーでは、マルチファイルアセンブリのもっともシンプルな例をご覧頂きました。どんなものかというと、C#, VB それぞれで作成したモジュールを結合した アセンブリ (DLL) を作成し、その DLL を呼ぶ アセンブリ(EXE)を作成、ロードされるファイルはどれか、モジュールに含まれるクラス、メソッドが呼ばれなかったらモジュールがロードされない・・・ということをご覧いただく簡単なデモンストレーションでした。
そのときに、マルチファイルアセンブリのメリットとしては2点ほどご紹介させていただきました。
- 複数言語のモジュールを含んだアセンブリを作成できる
ちょうどデモで実施したものが、C#、VB で作成されたモジュールからなるマルチファイルアセンブリになっていました。 - 利用されないモジュールは、ロードされないためメモリを最適に使用できる
ご質問として「ほかのメリットは?」といただきましたが、ほかのメリットについても考えてみました。
- 開発者視点と利用者視点の分離、最適化
開発者サイドでは、機能や担当者、ファイル種別などの単位でモジュールを識別、管理することができる。
利用者サイドでは、アプリケーションをひとつのアセンブリとして名前とそのバージョンで識別、管理することができる(因みに、セキュリティチェックもアセンブリ単位です)。
# シングルファイルアセンブリだと、両者はともに複数のアセンブリとしての識別、管理となる。 - ローカルに配置されていないアプリケーションの場合、ダウンロードを最適化できる
必要なモジュールファイルだけがダウンロードされるため、効率化が見込まれる
注意点としては、
- 物理的なファイルは、複数になるためファイルの管理は複雑化する
- Visual Studio からは作成できない(除くC++/CLI)
- 内部での検索回数が増加する(アセンブリ→モジュールと検索される)
などが挙げられるのではないでしょうか。
ながさわ