/ / Singleton DAL-клас - .net, singleton, рівень доступу до даних

Клас DAL Singleton - .net, одиночний, рівень доступу до даних

Чи не повинно бути "класів у DAL (customerDAL)синглтон? Оскільки мої контролери (customerController) виставляють "Спільні підписки", то при кожному виклику немає необхідності створювати новий об'єкт DAL, якщо він уже існував. Правильно?

Дякую

Відповіді:

3 для відповіді № 1

Односімейні об'єкти, як відомо, важко перевірити.Я б подивився на створення вашого DAL таким чином, що не буде дорого створювати екземпляри, а потім створювати новий за необхідності. Таким чином ви зможете писати модульні тести для DAL набагато простіше і все одно не матимете великих витрат . Крім того, якщо ви створюєте DAL як синглтон, вам потрібно буде набагато більше подбати про те, щоб зробити його потокобезпечним, якщо ви використовуєте його в багатопотоковому середовищі (наприклад, у веб-програмі).


3 для відповіді № 2

Якщо у вас є веб-сайт, одиночні об'єкти Dal єдуже небезпечно, оскільки кожен запит на сайт є частиною однієї програми. Якщо їх неправильно побудувати, вони можуть стати вузькими місцями для доступу до бази даних.


3 для відповіді № 3

Це дуже залежить від архітектури вашого повного рішення. Один синглтон може важко зіграти, коли у вас багато споживачів. Ось тут - це контрольний список речей, які ви можете врахувати при розробці DAL. Крім того, існує безліч шаблонів DAL, таких як Repository та деякі фасадні шаблони.


0 для відповіді № 4

Синглтон слід використовувати лише тоді, коли ви хочете переконатися, що в екземплярі вашої програми коли-небудь створюється лише один екземпляр класу.

Сінглтона ледве можна було вважати запахом коду. Більшість людей, які використовують Синглтон, використовують його погано. Тому, коли ви бачите такий, є велика ймовірність, що він не використовується належним чином.

Що стосується DAL, об’єкти не є просторими для створення. Вони повинні покладатися на використання пулу з'єднань, а потім запитувати з'єднання з пулу кожного разу, коли потрібно виконати команду.

Звичайно, доступні різні шаблони, і ви повинні здебільшого використовувати ORM, якщо тільки запит не потрібно змінити для підвищення продуктивності.

Побачити NHibernate, SubSonic, Linq2Sql, Структура Entity (ще не звільнений?) тощо.