Я обнаружил, что 2,5-уровневый дизайн лучше всего работает для новых веб-приложений, которые я создал.
Я обычно начинаю с 2 библиотек классов и 1 веб-приложения.
Company.Data
(Библиотека классов)
Company.Web
(библиотека классов) (содержит PageBase
, пользовательские элементы управления, вспомогательные функции и т. Д.)
Company.Web.WebApplication
(веб-приложение)
Для приложений, которые я создал, я использую только хранимые процедуры для доступа к данным.
Фактически я создал шаблоны CodeSmith для генерации всех хранимых процедур, данных и бизнес-классов.
Company.Data
Эта сборка состоит в основном из классов и коллекций данных сущностей.
Например, у меня обычно есть таблица с именем Settings
в моих веб-приложениях.
Будет создан класс Setting
и SettingCollection
.
Так что, если мне нужно загрузить определенную настройку, я могу сделать это ..
Dim setting As New Setting(1) 'pass in the id of the specific setting
setting.Value = "False" 'change the value
setting.Save() ' Call the save method to persist changes back to the database
или для создания новой настройки я просто не передаю значение в конструктор
Dim setting as New Setting()
setting.Name = "SmtpServer"
setting.Value = "localhost"
setting.Save()
Мои пространства имен в сборке Company.Data
обычно выглядят так ...
Company.Data.Entites
Company.Data.Collections
Company.Data.BusinessObjects
(Это пространство имен используется для создания пользовательских методов доступа к данным)
Я также генерирую собственные методы на основе первичных ключей, внешних ключей и уникальных индексов.
Например, столбец имени в таблице настроек имеет уникальный индекс.
Общий метод с именем GetSettingByName
будет сгенерирован автоматически, и он вернет объект настройки.
Этот метод будет в Company.Data.BusinessObjects
пространстве имен
Для классов сущностей и бизнес-объектов создаются два файла. 1, который генерируется каждый раз, и 1, который редактируется и генерируется только
первый раз. Я использую частичные классы, чтобы позволить мне добавлять пользовательский код без перезаписи.
Для меня эта методология сработала очень хорошо. Генерация кодесмитов экономит мне бесчисленные часы кодирования. Я могу добавить 5 новых столбцов в таблицу, восстановить
весь новый код в секундах. Хранимые процедуры будут удалены и воссозданы.
2.5-уровневый дизайн работает хорошо, потому что мое приложение будет использовать только одну базу данных, а это Sql Server. Необходимость использовать access, oracle, mysql в будущем не произойдет.