以前、複数のプロジェクトで一つのサイトを構成するエントリを書いた。それの続き。
色々試してみてるけど、とりあえず今のとこ理解した事のメモ。
- 単純にプロジェクト(ソリューション)分割しても、dllは分かれるけど、アプリケーションプールが分けられない。
- 上記の場合はSessionの共有ができる。(以前書いたエントリのやり方だと)
個人的にアプリケーションプールも分けたい。ちょろちょろ調べると、アプリケーションプール分けると普通のやり方ではSessionの共有が出来ないっぽい。
基盤的なものを作らないとだめそーですね。ということで、とりあえず、アプリケーションプールも分けられる構成方法は以下。
とりあえず、ベースとなるMVCアプリを作る。(認証系は全部ここに入れるか、別アプリで認証サーバ的な何かを作っておかないとダメ)
で、サブ的なMVCアプリを作る。サブのほうの参照にベースのDLLを入れてコンパイル。
そしたら、Global.asax.csを削除する。して、Global.asaxの編集。以下の感じ。
<%@ Application Codebehind="Global.asax.cs" Inherits="**ここをベースと同じにする**" Language="C#" %>
ここまででベース側の起動処理とかが組み込まれる。逆にサブ側の起動処理的なものはガン無視されるので、不要なファイルは全部消す。
これで全てのサブアプリで共通の基盤的な動きになる。
で、大きな問題が一つ。ルートの定義が出来ない。出来ないというか、Area的なやり方ではないので、.netに組み込まれてる「Html.ActionLink」でサブアプリ側へ行く記述が出来ない。ここはヘルパー自作するしかないかしらね。。。
あと、bundle系。こーゆーのやるなら、もちろんCSSとかスクリプトとかも一か所で管理したいじゃない。。。
困ったことにbundleって”~/hoge/fuga”的な書き方じゃないと許してくれなかった。レイアウトに直書きしかないのかしら。。。ヘルパー作るか?
あと、この構成だと、セッションの共有が出来ないからもちろん認証の共有もデフォじゃ無理。なので、何か仕組みを作っておかないと無理かな。セッションの共有はSQLServerで行けそうだけど微妙かな。。。
さらにためし中。