ASP.NET MVCでプラガブルな構造

2018/01/14
一つのプロジェクトで複数の開発者がそれぞれ小振りの機能を開発時、発行時丸ごとビルドしたくない。
他人の修正部分を巻き込みたくない、巻き込まれたくも無い。
Core+プラグイン(エクステンション、モジュール)構造にしたい…。
何回か調べていますが、久しぶりに調べると大きく状況が変わっていました。

Orchard Core

今使うならこれかな。初めて出会った時に比べて分かりやすくなっています。
Coreは.NET CoreのCoreです。そのうち消えるだろうと思っていたOrchard CMSですがなんとCore対応中です。
CMSの機能抜きでCore+プラグイン構造のフレームワークとして使う時の最小限サンプルはこちら

Area

普通に作ると一つのdllになるので、Areaの下に別プロジェクトを作成する。ビルド時のdllの作成場所を親プロジェクトのbinフォルダに変更。既存の知識だけで運用でカバー。
WebFormでやったのと似たような発想。

MEF

プロジェクトを小分けにし動的に追加していきたい、と言う目的からたどるとMEFに行き当たります。
このあたり

Portable Areas

MVC始めた頃からあります。
一つのAreaを複数のサイトで使いまわしたい場合。
覚えやすい名前ですが、最近の情報がなくてちょっと不安。
このあたり

RazorGenerator

こちらも若干モジュール化とは異なる気がしますが、Viewをdllにしてしまおうというもの。
本来の使い方
ソース
詳しい説明
OK キャンセル 確認 その他