現在、ASP.NetWebformsを使用して新しいWebサイトの開発を開始しています。このプロジェクトを適切に開始するために、アプリケーションのVisual Studioソリューションのセットアップを調査しています。この場合、アプリケーションは、サイズ(コード行)が等しい、簡単に認識できるコンポーネントで構成されます。
プロジェクトはまだ実際には開始されていないため、標準の3層セットアップ(データ、ビジネスロジック、およびプレゼンテーション)でソリューションを構造化しました。この設定はプロジェクトの開始時には問題ありませんが、プロジェクトが成長するにつれて、3つの層がすぐに大きくなり始め、コードのナビゲートと検索が難しくなり、保守性と全体的な品質感が損なわれます。
そのため、プロジェクト中に、それぞれが独自の3層セットアップを持つ機能コンポーネントを形成する新しいセットアップに変換したいと思います。例:ウェブサイトには、ユーザーアカウントを作成および管理するためのショッピングカートとオプションがあります。複数のコンポーネントで使用されるスタル用のコンポーネントも必要です。この例では、これを共通と呼びます。これにより、次の設定が行われます。
一般的なファイル:
- Project.Common.Data
- Project.Common.Business
- Project.Common.Presentations
ショッピングカート:
- Project.Shoppingcart.Data
- Project.Shoppingcart.Business
- Project.Shoppingcart.Presentations
アカウント管理:
- Project.Account.Data
- Project.Account.Business
- Project.Account.Presentations
ウェブサイト:
- Project.Website.Data
- Project.Website.Business
- Project.Website.Presentations
上記のサンプルには3つのコンポーネントがあり、それぞれに3つのプロジェクトが含まれています。各コンポーネントには、Webファイル(ページ、コントロール、フロントエンドコード)を含む1つのWebアプリケーションプロジェクトがあります。以前のすべての.Netプロジェクトには単純なWebアプリケーションプロジェクトが含まれていたため、このセットアップは私にとって新しい経験です。
それでも、ソリューションを1つのアプリケーションとして感じ、Webサイトとコンポーネントを簡単にデバッグできるようにしたいと考えています。これを実現するには、「Project.Web.Presentation」WebアプリケーションプロジェクトをメインのWebアプリケーションプロジェクトにする必要があると思います。私は現在、この方法でソリューションをセットアップできるかどうかを調査しています。いくつかのアプローチを試しましたが、これまでのところうまく機能しているものはありません。
すべてのWebアプリケーションプロジェクトを個別に実行すると、これは正常に機能しましたが、すべてのアプリケーションを個別に実行する必要があり、デバッグ時にひどい同じポートでそれらを実行することはできません。
他のプレゼンテーションプロジェクトのファイルを「Project.Web.Presentation」プロジェクトへのリンクとして追加し、そのプロジェクトをスタートアッププロジェクトとして設定します。デバッグ時にファイルが存在しないため、これは機能しません。デプロイメントパッケージをビルドするときに正常に機能するようです。どういうわけかそれらの重複ファイルがバージョン管理で終わるのを防ぐ必要があるので、私はファイルをコピーしたくありません。
これまでのところ、私が考えているセットアップで作業するための良い方法を見つけていません。私は提案を受け入れます、ヒントを事前に感謝します!