DAL (customerDAL) のクラスはシングルトンであるべきではありませんか? 私のコントローラー (customerController) は「Shared Subs」を公開するため、すべての呼び出しで、既に存在する場合は新しい DAL オブジェクトを作成する必要はありません。正しい?
ありがとう
DAL (customerDAL) のクラスはシングルトンであるべきではありませんか? 私のコントローラー (customerController) は「Shared Subs」を公開するため、すべての呼び出しで、既に存在する場合は新しい DAL オブジェクトを作成する必要はありません。正しい?
ありがとう
サイトへのすべてのリクエストが同じアプリケーションの一部であるため、Web サイトのシングルトン dal オブジェクトは非常に危険です。間違って構築すると、データベースへのアクセスのボトルネックになる可能性があります。
これは、完全なソリューションのアーキテクチャに大きく依存します。多くのコンシューマーがいる場合、1 つのシングルトンを取得するのは難しい場合があります。DAL を設計する際に考慮すべき事項のチェックリストを次に示します。また、Repository のような多くの DAL パターンといくつかのファサードのようなパターンがあります。
シングルトン オブジェクトは、テストが難しいことで有名です。インスタンス化に費用がかからないように DAL を作成し、必要に応じて新しい DAL を作成することを検討します。このようにして、DAL の単体テストをはるかに簡単に記述できるようになり、それでもオーバーヘッドはあまり発生しません。さらに、DAL をシングルトンとして作成する場合、マルチスレッド環境 (Web アプリなど) で使用する場合は、スレッド セーフにすることにさらに注意を払う必要があります。
シングルトンは、アプリケーションのインスタンス内でクラスのインスタンスが 1 つだけインスタンス化されるようにする場合にのみ使用してください。
シングルトンはコードの匂いとは考えられませんでした。Singleton を使用するほとんどの人は、それをうまく使用していません。そのため、適切に使用されていない可能性が高くなります。
DAL に関して言えば、オブジェクトは作成するのに拡張的ではありません。接続プールの使用に依存し、コマンドの実行が必要になるたびにプールから接続を要求する必要があります。
もちろん、さまざまなパターンが利用可能であり、パフォーマンスのためにリクエストを微調整する必要がない限り、ほとんどの場合 ORM を使用する必要があります。
NHibernate、SubSonic、Linq2Sql、Entity Framework (まだリリースされていませんか?) などを参照してください。