2008-09-22 6 views
1

Je suis habitué à la mise en page LLBLGen donne quand il génère des objets basés sur une structure de base de données, ce qui pourrait générer les fichiers de classe suivants pour une table « Utilisateur » donnée dans la base de données:Est-ce que quelqu'un a un bon article ou un bon conseil pour le nommage de classe pour les applications web n-tier?

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

Cela fournit une fonctionnalité de base pour l'accès aux données. Cependant, lorsque vous voulez mettre en œuvre une logique métier, comment gérez-vous les choses? Par exemple, étant donné une structure de table qui pourrait ressembler à ceci:

USER 
userId 
firstName 
lastName 
username 
password 
lockedOut 

Et si vous vouliez verrouiller un utilisateur? Quel code appelleriez-vous à partir de la couche de présentation? Souhaitez-vous instancier la classe UserEntity et faire:

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

Ou créer une nouvelle classe, comme userhelper (/BusinessLogic/UserHelper.cs), ce qui pourrait avoir une fonction de LockOutUser. Cela changerait le code à:

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

Ou voulez-vous étendre la classe de base UserEntity et créer UserEntityExt qui ajoute les nouvelles fonctionnalités? Par conséquent, le code de la couche de présentation peut ressembler à:

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

Ou ... feriez-vous autre chose?

Et quelle serait la structure de votre répertoire/espace de noms et de vos conventions de dénomination de fichier/classe?

+0

Vous ne pouvez pas modifier la classe UserEntity? J'ajouterais la méthode de verrouillage là. –

Répondre

1

Je pense que ce que vous cherchez est une couche de service qui se placerait au-dessus des objets du domaine. Vous avez essentiellement ceci avec votre deuxième option bien que je puisse l'appeler UserService ou UserTasks. En encapsulant ce processus LockUser dans un seul endroit, il sera facile de le modifier plus tard s'il y a plus d'étapes ou d'autres objets de domaine impliqués. En outre, ce serait l'endroit pour implémenter des transactions en traitant plusieurs appels de base de données.

Questions connexes