開発者がデータ アクセス コードを記述するとき、アプリケーションが適切にスケーリングし、負荷/ヒットを処理する必要があるかどうかを本当に心配する必要があります。
この単純な問題を考えると、スケーラブルな方法でどのように解決しますか?
1.ProjectResource
クラスです ( に割り当てられたリソースをカプセル化しますProject
)
2.プロジェクトに割り当てられた各リソースはUser
クラスです
3.User
のそれぞれにProject
もあるReportingHead
とProjectManager
のインスタンスもあるUser
4.最後に、Project
プロジェクトの詳細を含むクラスがあります
使用クラスの凡例
ユーザー
計画
プロジェクトリソース
テーブル ダイアグラム
プロジェクトリソース
リソース ID
プロジェクト ID
ユーザーID
レポーティングヘッド
プロジェクトマネージャ
クラス図
プロジェクトリソース
ResourceId : 文字列 / Guid
プロジェクト : プロジェクト
ユーザー : ユーザー
ReportingHead : ユーザー
ProjectManager : ユーザー
ノート:
すべてのユーザー情報は User テーブルに格納されます
すべてのプロジェクト情報はプロジェクト テーブルに保存されます
これが問題です
以下の Resource In a Project オペレーションのアプリケーション リクエストが実行された場合
最初にプロジェクトのレコードを取得します
UserId を取得し、( を使用して
Users DAL
) リクエストを作成してユーザー インスタンスを取得します。ProjectId を取得し、( を使用して
Projects DAL
) リクエストを行い、プロジェクト情報を取得しますUsers
最後にandProject
を のインスタンスに割り当てますProjectResource
3 Db Calls
ここでは単一のデータを入力するために作成されていることがわかりますProjectResource
が、懸念事項とオブジェクトの管理者は明確に定義されています。&にもあるので、これは私が計画した方法です。connection pooling
Sql Server
ADO.net
Table Inner Joins と Populating を使用して、すべての詳細を 1 回のヒットで取得する別の方法もあります。
私は本当にどちらの道を取るべきですか、なぜですか?
エクストラ:
.NET 2.0、ASP.net 2.0、C#、Sql Server 2005、アプリケーションをホストする同じマシン上の DB。