4

一般に、ASP.NET サイトの App_Code ディレクトリにコード (BaseClasses または DataAccess コード) を保持するのは好きではありません。私は通常、これを MySite.BusinessLogic および MySite.DataAccess DLL にそれぞれ引き出します。

ASP.NET MVC についても同じことを行うべきか疑問に思っています。

ソリューションを次のように整理したほうがよいでしょうか。

  • MySite.Common - DLL - (.NET システム DLL 上に構築された基本機能)
  • MySite.DAL - DLL - (DataAccessLayer & DBML ファイル)
  • MySite.Models - DLL - (リポジトリ クラスなどの MVC モデル)
  • MySite.Controllers - DLL (モデルを使用する MVC コントローラー)
  • MySite - ASP.NET MVC サイト。

それとも、何か不足していますか...おそらく、いくつかの素晴らしいものを失うでしょう(ビューの追加、コントローラーに移動、追加されたコンテキストメニュー項目)

4

3 に答える 3

3

私はMVCを使用していくつかのプロジェクトしか行っていませんが、命名構造を使用して次のことを行いました:

  • MySite.Common - DLL - (.NET システム DLL 上に構築された基本機能)
  • MySite.DAL - DLL - (DataAccessLayer & DBML ファイルとリポジトリ モデル)
  • MySite.Models - これを MVC Web アプリの一部として含め、リポジトリ モデルごとに常に 1 対 1 でマップされるとは限らないビューに固有のモデルのみを持っていました。
  • MySite.Controllers - MVC アプリの一部として含まれていますが、ビジネス層にリンクできます
  • MySite - MVC アプリ。

最終的に、私の MVC ソリューションには次のプロジェクトがありました。

  • MVC Web アプリ - DAL データをマップするためのコントローラー、ビュー モデルが含まれています。
  • 共通 - 他のアプリで使用できる機能
  • DAL - ラッパー クラスを含むすべてのデータ アクセス関連データが含まれていました
  • BL - 多くのビジネス固有のロジックが必要かどうかに応じてオプション
  • テスト

編集:私のDALは常にラップされたオブジェクトを出力します(Linq2Sqlを使用している場合、自動生成されたクラスをDALのクラスに直接マップします)。MVC アプリに存在する唯一のクラスは、ビューを表すコンテナーであり、主にビューにデータを渡すために使用されます。

モバイル アプリが同様のビューを使用している場合、MVC アプリ ビューから同じクラスを再利用しようとはしません。管理する必要があるわずかな違いが常にあり、DAL クラスを使用してモバイル ビューにマップすることができます。これは、ビュー クラスをアプリにローカライズするパターンに従います。

于 2010-03-25T16:50:59.087 に答える
3

ほとんどの場合、次の構造は正常に機能します。

  • MySite.BusinessLogic (コントローラー、モデル、リポジトリーなど)
  • MySite.BusinessLogic.Tests (コントローラー、モデル、リポジトリーなどの単体テスト)
  • MySiteA (ビュー、静的コンテンツ)
  • MySiteB (ビュー、静的コンテンツ)

MySiteA と MySiteB は、ビジネス ロジックの機能を再利用する同じサイトの 2 つのフレーバーである可能性があります。

パフォーマンスの観点から、多くの小さなアセンブリよりも大きなアセンブリの数を少なくする必要があります。

于 2010-03-25T17:39:03.020 に答える
2

私たちは少し違うことをします

  • [データベース名].Database.DLL(特定のデータベースのDBMLファイル)
  • [データベース名].Services。[問題のあるドメイン].DLL(モデル、サービス、リポジトリを含む)
  • [データベース名].Services。[問題のあるドメイン].Tests.DLL
  • [データベース名].Services.DLL(上記のすべてが単一のサービスプロジェクトにうまく収まる場合)
  • [データベース名].Services.Tests.DLL
  • [問題ドメイン].Services.DLL(問題ドメイン別のビジネスロジック)
  • [問題のあるドメイン].Services.Tests.DLL
  • Web.Framework.DLL(再利用可能なASP.NETおよびMVCコンポーネント)
  • Web.Framework.Tests.DLL
  • MySite.Web.DLL(ViewModelsを含むMVCアプリケーション)
  • MySite.Web.Tests.DLL

これを行うのは、接続する複数のデータベースとデータサービスがあるためです。また、問題のあるドメインによっては、同じデータベースに異なるモデルのセットでアクセスする場合がありますが、類似した名前を共有する場合があります。

サービスモジュール内では、次の構造になります

  • \モデル
  • \リポジトリ
  • \サービス
  • \等。
于 2010-03-25T18:33:13.313 に答える