Qualcuno ha un buon articolo o un buon consiglio per la denominazione di classe per le applicazioni web di livello n?

StackOverflow https://stackoverflow.com/questions/117492

  •  02-07-2019
  •  | 
  •  

Domanda

Sono abituato al layout che LLBLGen fornisce quando genera oggetti basati su una struttura di database, che potrebbe generare i seguenti file di classe per un dato "Utente". tabella nel database:

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

Fornisce alcune funzionalità di base per l'accesso ai dati. Tuttavia, quando si desidera implementare la logica di business oltre a ciò, come si organizzano le cose? Ad esempio, data una struttura di tabella che potrebbe assomigliare a questa:

 USER
 userId
 firstName
 lastName
 username
 password
 lockedOut

Cosa succede se si desidera bloccare un utente? Quale codice chiameresti dal livello di presentazione? Vuoi creare un'istanza della classe UserEntity e fare:

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

O creeresti una nuova classe, come UserHelper (/BusinessLogic/UserHelper.cs), che potrebbe avere una funzione LockOutUser. Ciò cambierebbe il codice in:

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

O vorresti estendere la classe UserEntity di base e creare UserEntityExt che aggiunge la nuova funzionalità? Pertanto, il codice dal livello di presentazione potrebbe apparire come:

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

Oppure ... faresti qualcos'altro del tutto?

E quali sarebbero le strutture della directory / namespace e le convenzioni di denominazione dei file / classi?

È stato utile?

Soluzione

Penso che quello che stai cercando sia un livello di servizio che si collochi sopra gli oggetti del dominio. Fondamentalmente hai questo con la tua seconda opzione, anche se potrei chiamarlo UserService o UserTasks. Incapsulando questo processo LockUser in un unico posto sarà facile cambiare in seguito quando potrebbero essere coinvolti più passaggi o altri oggetti di dominio. Inoltre, questo sarebbe il posto dove implementare le transazioni quando si gestiscono più chiamate al database.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top