Question

Je sais que cela peut paraître idiot, mais je trouve qu'il est difficile de comprendre la nécessité d'une couche de service et ses différences avec la couche d'affaires.

Alors, nous utilisons asp.net mvc 2 et contiennent des données d'accès qui couche fait tout l'interrogation de la base de données et nous avons la couche d'affaires qui a la logique métier et nécessaires à la validation fait. Enfin, nous avons la couche de présentation qui a essentiellement tous les points de vue. De plus, nous avons aussi des aides, DTO et classes ViewModel dans différents dossiers en tant que partie de nos bibliothèques. Mais je l'ai essayé de lire sur l'architecture et il semble que la couche de service est une partie importante d'une architecture.

Tout ce que je comprends est qu'une couche de service est quelque chose qui appelle toutes les fonctions. Mais je ne vois pas vraiment la nécessité de la couche de service dans notre application? Ou peut-être déjà là et je ne peux pas le voir ... Quelqu'un peut-il expliquer avec un exemple comment une couche de service est important? Comment est-il différent d'une couche d'affaires en raison de ce que j'ai lu semblent assez similaires? Si son premier dans le besoin du tout? Tout ce que nous essayons de faire est architecte notre application de la meilleure façon possible quelles sont vos pensées et de l'expérience à ce sujet?

Était-ce utile?

La solution

Il est tout découplage votre application en AUTONOME morceaux, chacun défini par l'obligation de faire un travail vraiment bien.

Cela vous permet d'appliquer des modèles de conception spécialisés et les meilleures pratiques à chaque composante.

Par exemple, le travail de la couche d'affaires est de mettre en œuvre la logique métier. Arrêt complet. L'exposition d'une API destinée à être consommée par la couche de présentation n'est pas sa « préoccupation ».

Ce rôle de déplacement entre est au mieux par une couche de service. Affacturage cette couche spécialisée vous permet d'appliquer des modèles beaucoup plus spécialisés pour chaque composant.

Il n'y a pas besoin de faire des choses de conception de cette façon, mais l'expérience accumulée de la communauté indique qu'il en résulte une application qui est beaucoup plus facile à développer et à maintenir parce que vous savez exactement ce que chaque composant est censé faire, avant même vous commencez à coder l'application.

Chaque couche doit faire un travail vraiment bien. Le rôle de go entre que les exécute de la couche de service est un tel travail bien défini et qui est la raison de son existence: il est une unité de complexité qui est conçu de la même manière encore et encore, plutôt que d'avoir à réinventer la roue à chaque fois, à ce rôle mangle avec la logique métier où il ne fait pas partie. Penser à la couche de service en tant que composant de mappage. Il est externe à la logique métier et ne appartiennent dans ses classes, ou dans les contrôleurs soit.

En outre, à la suite d'être pris en compte de la logique métier, vous obtenez des objets d'affaires plus simples qui sont plus faciles à utiliser par d'autres applications et services que les consume « affaires ».

ASP.NET MVC est rien, sinon une plate-forme pour vous permettre d'écrire vos applications en tant que composants spécialisés.

En raison de cette compréhension croissante de la façon de se spécialiser composants, les programmes évoluent dans un bol de soupe primordiale et des spaghettis dans quelque chose de différent et étrange. La complexité qu'ils peuvent traiter, tout en continuant d'utiliser des structures simples, augmente. Evolution devient en cours. Si la vie est quelque chose d'aller, ce doit être bon, donc gardez rouler la balle.

Autres conseils

Dans certains modèles, la couche de service n'est pas utilisé par la couche de présentation.

La couche de service est appelé par d'autres applications qui veulent utiliser les couches d'affaires et l'accès aux données dans l'application.

Dans un sens, la couche de service est un autre front-end séparée de la couche de présentation.

Voir le schéma architectural ici. Les utilisateurs accèdent à l'application à travers la couche de présentation. Et les systèmes externes accèdent à l'application à travers la couche de services. La couche de présentation et la couche de services parler à la façade de l'application dans la couche d'affaires.

À titre d'exemple de ce que les autres pourraient être des « systèmes externes », les services Web et les services WCF appeler la couche de service. Une autre application Web pourrait appeler la couche de service de cette application dans un appel de service Web. Ce serait une façon de faire en sorte que les deux applications sont la même logique d'affaires, et que toute modification apportée à la logique métier se reflètent dans les deux applications.

Chris des points animés sur, il ne faut pas se laisser emporter par la création de couches. Je recommande de créer uniquement les couches qui seraient utiles dans votre application. Dans mon expérience, la nécessité d'une couche de service ne sont pas fréquentes, mais la nécessité d'une couche d'affaires est très fréquente.

La couche de service est généralement construit en termes d'opérations distinctes qui doivent être pris en charge pour un client.

Par exemple, une couche de service peut exposer Créer un compte. Alors que la couche d'affaires peut consister en valider les paramètres nécessaires à la création d'un compte, la construction de données objets à persista, etc.

Très souvent, la couche de service utilise un code de procédure ou de style Transaction Script pour orchestrer l'entreprise et / ou des couches logiques.

Sachant cela, vous pouvez comprendre que votre couche d'affaires est vraiment une couche de service ainsi. À un certain moment, le point à partir duquel vous vous posez cette question étant un tel point, la distinction est surtout sémantique.

De mon point de vue une couche de service vous permet d'isoler votre couche de présentation de votre couche d'affaires, de la même manière la couche d'accès aux données commerciales et vous isole de la façon dont vous persistez les données.

Dans votre couche d'affaires vous avait mis les choses qui sont essentielles à votre « business ». Un parvins (et probablement par exemple mal conçu) serait d'avoir ce soit l'endroit où disent que les prix sur un produit d'actualisation se produisent.

La couche de service vous permet de séparer encore l'interface de l'entreprise. Ou échange même d'autres couches d'affaires en fonction des scénarios changeants de l'entreprise.

Toutes les applications ne a besoin d'un bien (beaucoup de variables entrent dans cette décision), trop architecture peut présenter la complexité de votre équipe ne peut pas avoir besoin.

allez voir ce que Randy Stafford dit à propos de la couche de service dans le livre « P EAA » http://martinfowler.com/eaaCatalog/serviceLayer.html

  

Une couche de service définit un   La limite de l'application [PloP Cockburn]   et son ensemble d'opérations disponibles   du point de vue de l'interface   couches clientes. Il encapsule les   la logique métier de l'application ,   contrôle des opérations et   Réponses coor-coordon- dans le   la mise en œuvre de ses activités.

Simple. Pour exposer votre logique métier à un client, utiliser une couche de service. Demandez-vous:

Lors du changement de logique métier, si le changement de couche de service? Si la réponse est « pas toujours », puis une couche de service est nécessaire.

Je sais que ce fil est vieux, mais une chose utile, je l'ai fait dans la couche de service est à des opérations de poignée (couche d'affaires ne devrait pas besoin de savoir comment gérer rollbacks, la commande des opérations, etc.).

Une autre chose que je l'ai fait est utilisé pour traduire entre les entités de domaine et DTO. Les offres de couche d'affaires avec le modèle de domaine, mais j'ai passé le retour de données à la couche de présentation sous forme de DTO (dans certains cas, il n'a pas été pratique d'exposer l'ensemble du modèle de domaine à la couche de présentation pour diverses raisons), de sorte que la couche de service gère cette cartographie.

En fin de compte, je vois la couche d'affaires comme plus à grains fins, tandis que la couche de service peut être plus grossière en ce qu'elle pourrait appeler plusieurs opérations dans le BLL et les appels de commande d'un appel de service.

Oui, et je note également que sur la couche de service est un bon endroit pour l'authentification, à la fois le rôle basé et en fonction utilisateur.

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