是否有人对n层Web应用程序的类命名有好的文章或者好的建议?

时间:2020-03-06 14:33:53  来源:igfitidea点击:

我习惯了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()

还是...我们会完全做其他事情吗?

目录/命名空间结构和文件/类命名约定是什么?

解决方案

我认为我们正在寻找的是位于域对象之上的服务层。尽管我可能将其称为UserService或者UserTasks,但从本质上讲,它具有第二个选项。通过将此LockUser进程封装在一个地方,以后可能涉及更多步骤或者其他域对象时,很容易进行更改。同样,在处理多个数据库调用时,这也是实现事务的地方。