Es una mala práctica para la capa de servicio para tener métodos que no tienen que ver con la base de datos?

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

  •  28-09-2019
  •  | 
  •  

Pregunta

Tengo los métodos siguientes en mi servicio de usuario

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

Usted notará que hay algunos métodos que no tienen que ver con la base de datos, pero sentí que este era un lugar bueno para usarlos.

¿Es esta práctica mala en cuenta?

Nota: Mi capa de repositorio estrictamente se refiere a la base de datos. Mi flujo va.

Base de datos> LINQ (DBML)> capa de repositorio> Capa de Servicio> Controlador (u otro).

¿Fue útil?

Solución

Ejemplo de haber avistado, se parece como una mala práctica. Si ves toda la información que usted está pidiendo desde su capa de servicios está realmente disponible en su propio controlador. ¿Por qué le gustaría límite de la aplicación transversal de obtener esta información?

Sin embargo, no podría ser una razón válida para someterse a una operación en la capa de servicio que no es precisamente tratando con DB.

En su caso yo diría que utilizar una clase de ayuda de algo así en el controlador.

Otros consejos

@Predeep tiene un punto. No ponga los métodos que pertenecen en el webproject en la capa de servicio. Usted se acaba de agregar otra dependencia.

La capa de servicio no se supone que es sólo una capa encima de la capa de repositorio. Podría contener la lógica de la modificación de la información de la base de datos o cualquier otra fuente de datos. Es perfectamente posible agregar otros métodos que no tienen que ver nada con la base de datos. Eso es lo que la capa es para. De lo contrario, usted podría saltar esa capa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top