2010-04-08 3 views
3

Nous essayons d'implémenter une application utilisant le modèle de couche de service parce que notre application a besoin de se connecter à d'autres applications multiples, et googler sur le web, nous avons trouvé ce lien d'un graphique démonstratif pour la façon "droite" d'appliquer le modèle :Modèle de couche de service - Pourrions-nous éviter la couche de service dans un cas spécifique?

martinfowler.com - Service Layer Pattern

Mais maintenant, nous avons une question: si notre système a besoin de mettre en œuvre une logique métier, seulement pour notre application (comme des données de maintenance pour le système lui-même) que nous ne devons partager avec d'autres systèmes. Sur la base de ce graphique:

Service Layer Patter by matinfowler

Comme il semble, il sera de mettre en œuvre une unnecesary couche de service juste pour cela; il sera plus pratique d'éviter la couche de service, et passez simplement de l'interface utilisateur au Business Layer (par exemple). Quel devrait être le bon moyen dans ce cas d'implémenter le modèle de couche de service? Que nous suggérez-vous pour un scénario comme celui que je vous ai dit?

Merci d'avance.

+0

duplication possible de http://stackoverflow.com/questions/2603750/service-layer-patter-could-we-avoid-the-service-layer-on-a-specific-case –

+0

J'ai déjà supprimé l'élément dupliqué . – lidermin

Répondre

8

L'abstraction peut être de n'importe quel degré, y compris transparent.

Le terme couche est trompeur. Je pense que Martin lui-même serait d'accord pour dire qu'il est préférable de parler d'une limite de contexte (de conception axée sur le domaine). Cela signifie que vous pouvez avoir plusieurs couches de service qui permettent d'abstraire votre domaine à différents degrés. L'API de couche de service que vous exposez à votre interface utilisateur peut faire beaucoup plus au sein de votre domaine que la couche de service que vous exposez à la passerelle d'intégration.

Je recommanderais de briser ces morceaux de services le long des contours fonctionnels bien. (Par exemple, un ensemble de services utilisés pour importer en bloc des données et un ensemble de services avec lesquels les utilisateurs interagissent normalement doivent être presque entièrement séparés.) De cette façon, vous devez exposer une API à une autre application avec laquelle vous souhaitez interagir. exactement de la même manière qu'un utilisateur peut vous faire utiliser la même API que l'interface utilisateur.

+1

C'est exact. La plupart des gens confondent le service pour n'être qu'une couche limite transactionnelle, ce qui n'est pas toujours le cas. – vsingh

1

Comme indiqué dans le lien que vous avez posté, la couche service définit une "interface" pour les clients en encapsulant la logique métier (complexe) et centralisant le contrôle de la transaction impliquant plusieurs ressources. La couche de service n'est pas seulement utilisée lorsque vous avez besoin de «partager» des services, elle facilite simplement les choses. Mais même avec un seul consommateur, centraliser le contrôle de la transaction est logique. "Service Layer" est juste une abstraction sur la logique de votre domaine.

Questions connexes