У кого-нибудь есть хорошая статья или хороший совет для именования классов для n-уровневых веб-приложений? - PullRequest
1 голос
/ 23 сентября 2008

Я привык к макету, который LLBLGen дает, когда он генерирует объекты на основе структуры базы данных, которая может генерировать следующие файлы классов для данной таблицы «Пользователь» в базе данных:

/EntityClasses/UserEntity.vb
/CollectionClasses/UserCollection.vb

Это обеспечивает некоторую базовую функциональность для доступа к данным. Однако, когда вы хотите реализовать бизнес-логику, как вы это делаете? Например, учитывая структуру таблицы, которая может выглядеть следующим образом:

 USER
 userId
 firstName
 lastName
 username
 password
 lockedOut

Что если вы хотите заблокировать пользователя? Какой код вы бы назвали со слоя презентации? Вы бы создали экземпляр класса UserEntity и сделали бы:

 User = new UserEntity(userId)
 User.lockedOut = true
 User.Save()

Или вы создадите новый класс, такой как UserHelper (/BusinessLogic/UserHelper.cs), который может иметь функцию LockOutUser. Это изменит код на:

 UH = new UserHelper()
 UH.LockOutUser(userId)

Или вы бы расширили базовый класс UserEntity и создали бы UserEntityExt, который добавляет новые функциональные возможности? Поэтому код из уровня представления может выглядеть следующим образом:

 User = new UserEntityExt(userId)
 User.LockOutUser()

Или ... ты бы вообще сделал что-нибудь еще?

И какова будет ваша структура каталогов / пространств имен и соглашения об именах файлов / классов?

1 Ответ

1 голос
/ 23 сентября 2008

Я думаю, что вы ищете сервисный слой, который будет располагаться поверх доменных объектов. По сути, у вас есть это со вторым вариантом, хотя я мог бы назвать его UserService или UserTasks. Инкапсулируя этот процесс LockUser в одном месте, это будет легко изменить позже, когда может быть больше шагов или других доменных объектов. Кроме того, это было бы местом для осуществления транзакций при работе с несколькими вызовами базы данных.

...