トップ回答者
Projectの分割の方法

質問
-
ASP.NETのプロジェクト分割に関して 教えていただけませんか。
※開発環境
ASP.NET4.0
VisualStudio2010
※現状
page数100page程のweb systemを1つのprojectで開発しております。
※相談したい内容
前任者が1 projectで使用しておりましたが、システム自体が大きくなりすぎ、
開発者よりprojectを分割したいといわれております。
理由としては、以下のようです。
・複数人で開発する場合に、開発がしにくい
(1つのリソースを複数人で触る必要がある場合等、TFSを使用していても困ることがある)
・機能別のrelease、deployがしにくい
私としては後者のほうは理解できるので、一度検討してみたいと考えておりますが、
以下の点に引っかかっております。
・マスターページ、css、javascriptなどはサブシステムのprojectで持つ必要があるため
version管理が手間になる
・部分的にsessionを使用している部分があるため、projectを分割した場合
そこの部分を別途検討する必要がある
・リリース作業が複数回になる
皆様もしprojectを分割して運用をしたことがあるかたいらっしゃれば、上記を
どのように解決されたのか また 分割して 成功・後悔どちらだったかなど 教えていただけませんでしょうか。
回答
-
Web Forms(MVC でない方)の Web アプリケーションプロジェクト(サイトプロジェクトでない方)でしょうか?
asp.net multiple projects をキーワードにググルとすぐに見つかるので、すでにご存知かもしれませんが、以下のような手段があるそうです。
チーム開発用に複数のプロジェクトから ASP.NET アプリケーションを作成する方法
http://support.microsoft.com/kb/307467/jaSeparating an ASP.NET Web Application into multiple Web Projects (Assemblies)
http://www.codeproject.com/Articles/8129/Separating-an-ASP-NET-Web-Application-into-multipl上記の方法は自分には経験がないので、既存の単一プロジェクトを分割するのに適当かどうかは分かりません。紹介したページがハズレでしたらすみません。
次回、新しいプロジェクトを開発する場合は、Web サイトプロジェクトも検討されてはいかがですか。以下のページの「Web サイト プロジェクトのコンパイル モデルの利点は以下のとおりです。 」以下を読んでみてください。
Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト
http://msdn.microsoft.com/ja-jp/library/dd547590.aspx
- 編集済み SurferOnWww 2012年9月14日 23:47 誤字訂正
- 回答の候補に設定 佐伯玲 2012年9月19日 4:11
- 回答としてマーク 佐伯玲 2012年9月21日 4:56
-
プロジェクト分割しています。気になっている点について、僕がやっている方法はこんなかんじです。
IISを使わず、前準備を行わなくてもデバック出来る環境を作りたくて、小細工をしています。
- プロジェクト内の構成は、実際のWebサーバーと同じ構成にする。
- CSSやJSなどシステム共通になるコンテンツに関しては、Visual Studioのリンク共有でプロジェクト内にJSなどを取り込む
- マスターページや共通のユーザーコントロールなどは、リンク共有用のWebサイトプロジェクトを用意し、DLLは参照設定、マスターページ自体はリンク共有のWebプロジェクトからリンク参照でプロジェクト内に取り込む
- 2と3はリンク参照のままだと404が発生するので、リンク参照を実ファイルに置き換えるビルド前アクションを定義し、プロジェクト参画者にはプロジェクトテンプレートを配布して使ってもらう
別プロジェクトで作成したとしても、実際にデプロイするのが単一アプリケーションディレクトリになる場合、セッションは同じ物を利用するはずです。もし別のアプリケーションとしてWebサーバーに配置する場合は、カスタムのセッションプロバイダーを作成してしのぎます。
4のビルド前アクションの実態は、プロジェクトファイルを解析してリンク参照になっているアイテムの参照元から、対象のファイルを自プロジェクトにコピーして回る単純なものです。
すべての返信
-
Web Forms(MVC でない方)の Web アプリケーションプロジェクト(サイトプロジェクトでない方)でしょうか?
asp.net multiple projects をキーワードにググルとすぐに見つかるので、すでにご存知かもしれませんが、以下のような手段があるそうです。
チーム開発用に複数のプロジェクトから ASP.NET アプリケーションを作成する方法
http://support.microsoft.com/kb/307467/jaSeparating an ASP.NET Web Application into multiple Web Projects (Assemblies)
http://www.codeproject.com/Articles/8129/Separating-an-ASP-NET-Web-Application-into-multipl上記の方法は自分には経験がないので、既存の単一プロジェクトを分割するのに適当かどうかは分かりません。紹介したページがハズレでしたらすみません。
次回、新しいプロジェクトを開発する場合は、Web サイトプロジェクトも検討されてはいかがですか。以下のページの「Web サイト プロジェクトのコンパイル モデルの利点は以下のとおりです。 」以下を読んでみてください。
Visual Studio での Web アプリケーション プロジェクトと Web サイト プロジェクト
http://msdn.microsoft.com/ja-jp/library/dd547590.aspx
- 編集済み SurferOnWww 2012年9月14日 23:47 誤字訂正
- 回答の候補に設定 佐伯玲 2012年9月19日 4:11
- 回答としてマーク 佐伯玲 2012年9月21日 4:56
-
プロジェクト分割しています。気になっている点について、僕がやっている方法はこんなかんじです。
IISを使わず、前準備を行わなくてもデバック出来る環境を作りたくて、小細工をしています。
- プロジェクト内の構成は、実際のWebサーバーと同じ構成にする。
- CSSやJSなどシステム共通になるコンテンツに関しては、Visual Studioのリンク共有でプロジェクト内にJSなどを取り込む
- マスターページや共通のユーザーコントロールなどは、リンク共有用のWebサイトプロジェクトを用意し、DLLは参照設定、マスターページ自体はリンク共有のWebプロジェクトからリンク参照でプロジェクト内に取り込む
- 2と3はリンク参照のままだと404が発生するので、リンク参照を実ファイルに置き換えるビルド前アクションを定義し、プロジェクト参画者にはプロジェクトテンプレートを配布して使ってもらう
別プロジェクトで作成したとしても、実際にデプロイするのが単一アプリケーションディレクトリになる場合、セッションは同じ物を利用するはずです。もし別のアプリケーションとしてWebサーバーに配置する場合は、カスタムのセッションプロバイダーを作成してしのぎます。
4のビルド前アクションの実態は、プロジェクトファイルを解析してリンク参照になっているアイテムの参照元から、対象のファイルを自プロジェクトにコピーして回る単純なものです。