Est-ce une mauvaise pratique de la couche de service pour avoir des méthodes qui ne traitent pas avec la base de données?

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

  •  28-09-2019
  •  | 
  •  

Question

J'ai les méthodes suivantes dans mon service utilisateur

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

vous remarquerez qu'il ya quelques méthodes qui ne traitent pas avec la base de données, mais je sentais que c'était un bon endroit pour les utiliser.

Est-ce considéré comme une mauvaise pratique?

Note: ma couche Repository traite strictement la base de données. va mon flux.

Base de données> LINQ (DBML)> Couche dépôt> Service Layer> Controller (ou autre).

Était-ce utile?

La solution

exemple que vous avez vue, il semble comme une mauvaise pratique. Si vous voyez toutes les informations que vous demandez de votre couche de service est en fait disponible sur votre contrôleur lui-même. Pourquoi voudriez-vous limites d'application pour obtenir croix ces informations?

Cependant, il y a peut-être une raison valable d'avoir une opération sur la couche de service qui ne traite pas exactement avec DB.

Dans votre cas, je dirais d'utiliser une classe d'aide de quelque chose comme ça dans le contrôleur.

Autres conseils

@Predeep a un point. Ne pas mettre les méthodes appartenant à la ProjetWeb dans la couche de service. Vous ajoutez une autre dépendance juste.

La couche de service n'est pas censé être juste une couche au-dessus de la couche de stockage. Il peut contenir une logique de modifier les informations de la base de données ou toute autre source de données. Il est tout d'ajouter d'autres méthodes qui n'ont rien à faire avec la base de données. C'est ce que la couche est pour. Sinon, vous pouvez simplement ignorer cette couche.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top