E 'cattiva pratica per il livello di servizio di avere metodi che non si occupano con il database?

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

  •  28-09-2019
  •  | 
  •  

Domanda

devo seguenti metodi nel mio User Service

Public Interface IUserService
    Sub AddUser(ByVal claimedidentifier As String, ByVal notes As String)
    Function GetAllUsers() As IList(Of User)
    Function GetUserByID(ByVal id As Integer) As User
    Sub UpdateUser(ByVal user As User)
    Sub SubmitChanges()

    ''# Below are methods that do not require database calls.
    Function GetUserIPAddress() As String
    Function GetUserBrowser() As String
    Function GetUserOperatingSystem() As String
    Function GetUserSubDomain() As String
End Interface

noterete che ci sono alcuni metodi che non riguardano il database, ma ho sentito che questo era un buon posto per usarli.

E 'questa pratica male considerato?

Nota: il mio strato repository si occupa strettamente con il database. Il mio flusso va.

Database> LINQ (DBML)> Livello Repository> Servizio Livello> Controller (o altro).

È stato utile?

Soluzione

Esempio che avete avvistato, sembra una cattiva pratica. Se si vede tutte le informazioni che ti stai chiedendo dal vostro livello di servizio è effettivamente disponibili sul controller stesso. Perché vorreste limite dell'applicazione croce per ottenere queste informazioni?

Per quanto ci potrebbe essere un valido motivo per un intervento sul livello di servizio che non è esattamente a che fare con DB.

Nel tuo caso direi di usare una classe di supporto di qualcosa di simile a controller.

Altri suggerimenti

@Predeep ha un punto. Non mettere metodi appartenenti al webproject nel livello di servizio. Si sono appena aggiungendo un altro dipendenza.

Il livello di servizio non dovrebbe essere solo uno strato sulla parte superiore dello strato di repository. Potrebbe contenere la logica di modificare le informazioni dal database o di qualsiasi altra fonte di dati. E 'perfettamente bene di aggiungere altri metodi che non hanno nulla a che fare con il database. Questo è ciò che lo strato è per. In caso contrario, si potrebbe saltare quel livello.

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