Question

Je ne sais pas où placer ma logique métier.J'ai un service WCF qui expose ses méthodes à mon client.

Ma logique métier doit-elle aller dans la méthode de service

public User GetUser(int id)
{  
     //Retrieve the user from a repository and perform business logic
     return user;
}

ou devrait-il être dans une classe distincte où chaque méthode de service WCF appellera à son tour les méthodes de la couche de gestion.

public User GetUser(int id)
{  
     return _userLogic.GetUser(id);
}
Était-ce utile?

La solution

Ma préférence personnelle est d'avoir WCF en tant que couche très fine au-dessus d'une couche métier distincte.La couche WCF ne fait rien de plus que d'effectuer des appels à la couche de gestion, comme vous l'avez montré dans l'option 2. Cela vous donne une certaine flexibilité dans le cas où vous souhaitez que votre couche de gestion soit consommée par autre chose que des clients WCF (par exemple, une application WPF appelant votre couche métier directement plutôt que via WCF).

Autres conseils

Les services WCF sont déjà, par défaut, conçus pour être réutilisés.Je ne vois aucune raison de ne pas avoir de logique dans vos services, mais gardez à l'esprit des choses comme le principe de responsabilité unique afin de ne pas vous retrouver avec un service qui fait une douzaine de choses.

Même dans ce cas, si vous finissez par découper vos fonctionnalités en classes plus petites, ce n'est pas du tout une mauvaise idée d'héberger ces classes en tant que services WCF.Vous pouvez ensuite les utiliser in-proc (via des tuyaux) si nécessaire ou au-delà des limites de la machine (tcp) ou même en tant que services Web.Créez des façades au besoin pour donner accès aux fonctionnalités de vos autres services plus petits.

Il n'est pas vraiment nécessaire d'éviter de mettre de la logique dans les classes de service WCF.

Je pense que la décision dépend des besoins de votre entreprise.WCF est un mécanisme pour transporter des données (objets) entre le serveur et le client.Si vous aimez que votre logique businsess s'exécute sur le serveur, vous devez laisser WCF exposer l'objet après avoir exécuté votre logique métier.

Il devrait aller dans un ensemble séparé de classes.Votre couche WCF ne doit contenir que la logique qui concerne directement la manière dont le produit du service est fourni.

Dans votre cas, je vois que vous avez une méthode WCF qui renvoie un utilisateur (je suppose que c'est une classe personnalisée) pourquoi avoir une méthode distincte pour renvoyer l'ID utilisateur au lieu de remplir cette propriété dans le cadre du retour de l'objet utilisateur?

Pour la réutilisation / la testabilité / la maintenance / la lisibilité, vous devez toujours mettre votre BL dans une couche séparée.

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