Quelle est la différence entre «couches» et «niveaux»?

215

Quelle est la différence entre "Layers" et "Tiers"?

cretzel
la source
4
Presque tous ceux que j'ai rencontrés dans le monde du logiciel utilisent ces deux termes de manière interchangeable comme s'ils étaient exactement les mêmes.
RBT

Réponses:

260

Les couches logiques ne sont qu'un moyen d'organiser votre code. Les couches typiques incluent la présentation, les activités et les données - les mêmes que le modèle traditionnel à 3 niveaux. Mais lorsque nous parlons de couches, nous ne parlons que d'organisation logique du code. Il n'est nullement sous-entendu que ces couches peuvent s'exécuter sur différents ordinateurs ou dans différents processus sur un seul ordinateur ou même dans un seul processus sur un seul ordinateur. Tout ce que nous faisons, c'est discuter d'une façon d'organiser un code en un ensemble de couches définies par une fonction spécifique.

Cependant, les niveaux physiques ne concernent que l'emplacement d'exécution du code. Plus précisément, les niveaux sont des endroits où les couches sont déployées et où les couches s'exécutent. En d'autres termes, les niveaux sont le déploiement physique des couches.

Source: Rockford Lhotka, toutes les applications devraient-elles être à n niveaux?

Panos
la source
43

Lisez le billet de Scott Hanselman sur la question: http://www.hanselman.com/blog/AReminderOnThreeMultiTierLayerArchitectureDesignBroughtToYouByMyLateNightFrustrations.aspx

Rappelez-vous cependant que dans "Scott World" (qui est, espérons-le, votre monde aussi :)), un "Tier" est une unité de déploiement, tandis qu'un "Layer" est une séparation logique des responsabilités dans le code. Vous pouvez dire que vous avez un système "à trois niveaux", mais que vous l'exécutez sur un ordinateur portable. Vous pouvez dire que vous avez un système "à 3 couches", mais que vous n'avez que des pages ASP.NET qui parlent à une base de données. Il y a du pouvoir dans la précision, mes amis.

Josh
la source
36

Les couches font référence à la séparation logique du code. Les couches logiques vous aident à mieux organiser votre code. Par exemple, une application peut avoir les couches suivantes.

1) Couche de présentation ou couche d'interface utilisateur 2) Couche d'entreprise ou couche de logique métier 3) Couche d'accès aux données ou couche de données

Les trois couches ci-dessus résident dans leurs propres projets, peuvent être 3 projets ou même plus. Lorsque nous compilons les projets, nous obtenons la DLL de couche respective. Nous avons donc maintenant 3 DLL.

Selon la façon dont nous déployons notre application, nous pouvons avoir 1 à 3 niveaux. Comme nous avons maintenant 3 DLL, si nous déployons toutes les DLL sur la même machine, nous n'avons alors qu'un seul niveau physique mais 3 couches logiques.

Si nous choisissons de déployer chaque DLL sur une machine distincte, nous avons 3 niveaux et 3 couches.

Ainsi, les couches sont une séparation logique et les niveaux sont une séparation physique. Nous pouvons également dire que les niveaux sont le déploiement physique des couches.

Satish
la source
Ce que j'ai compris de votre réponse que nous pouvons déployer 3 couches (DLL) sur trois serveurs différents. Droite ? Pouvez-vous me dire comment donner la référence de la couche Business Logic sur la couche de présentation?
Mazhar Khan
@MazharKhan Vous souhaiterez peut-être utiliser un service pour exposer la fonctionnalité de la couche métier à la couche de présentation
Amit Saxena
32

Pourquoi toujours essayer d'utiliser des mots complexes?

Une couche = une partie de votre code , si votre application est un gâteau, c'est une tranche.

Un niveau = une machine physique , un serveur.

Un niveau héberge une ou plusieurs couches.


Exemple de calques:

  • Couche de présentation = généralement tout le code lié à l'interface utilisateur
  • Couche d'accès aux données = tout le code lié à l'accès à votre base de données

Étage:

Votre code est hébergé sur un serveur = Votre code est hébergé sur un niveau.

Votre code est hébergé sur 2 serveurs = Votre code est hébergé sur 2 niveaux.

Par exemple, une machine hébergeant le site Web lui-même (la couche Présentation), une autre machine plus sécurisée hébergeant du code plus sensible à la sécurité (code métier réel - couche métier, couche d'accès à la base de données, etc.).


Il y a tellement d'avantages à implémenter une architecture en couches. C'est délicat et la mise en œuvre correcte d'une application en couches prend du temps. Si vous en avez, consultez cet article de Microsoft: http://msdn.microsoft.com/en-gb/library/ee658109.aspx

Andrew
la source
13

J'ai trouvé une définition qui dit que les couches sont une séparation logique et les niveaux sont une séparation physique.

cretzel
la source
10
  1. Dans un anglais simple, le Tierfait référence à "chacun dans une série de rangées ou de niveaux d'une structure placée l'un au-dessus de l'autre" tandis que leLayer fait référence à "une feuille, une quantité ou une épaisseur de matériau, généralement l'un des nombreux, couvrant une surface ou un corps ".

  2. Le niveau est un unité physique , où le code / processus s'exécute. Par exemple: client, serveur d'applications, serveur de base de données;

    La couche est une unité logique , comment organiser le code. Par exemple: présentation (vue), contrôleur, modèles, référentiel, accès aux données.

  3. Les niveaux représentent la séparation physique de la présentation, des activités, des services et des fonctionnalités de données de votre conception sur des ordinateurs et des systèmes distincts.

    Les couches sont les regroupements logiques des composants logiciels qui composent l'application ou le service. Ils aident à différencier les différents types de tâches effectuées par les composants, ce qui facilite la création d'une conception prenant en charge la réutilisation des composants. Chaque couche logique contient un certain nombre de types de composants discrets regroupés en sous-couches, chaque sous-couche effectuant un type de tâche spécifique.

Le modèle à deux niveaux représente un client et un serveur.

Dans ce scénario, le client et le serveur peuvent exister sur la même machine ou peuvent se trouver sur deux machines différentes. La figure ci-dessous illustre un scénario d'application Web courant dans lequel le client interagit avec un serveur Web situé dans le niveau client. Ce niveau contient la logique de la couche de présentation et toute logique de couche métier requise. L'application Web communique avec une machine distincte qui héberge le niveau de base de données, qui contient la logique de la couche de données.

Layers vs Tiers

Avantages des couches et des niveaux:

  • La superposition vous aide à maximiser la maintenabilité du code, à optimiser le fonctionnement de l'application lorsqu'elle est déployée de différentes manières et à délimiter clairement les emplacements où certaines décisions technologiques ou de conception doivent être prises.

  • Placer vos couches sur des niveaux physiques distincts peut améliorer les performances en répartissant la charge sur plusieurs serveurs. Il peut également contribuer à la sécurité en séparant les composants et couches plus sensibles sur différents réseaux ou sur Internet par rapport à un intranet.

Une application à 1 niveau peut être une application à 3 couches.

TryinHard
la source
6

Oui, mes chers amis ont dit correctement. La couche est une partition d'application logique tandis que le niveau est la partition physique de la partition du niveau système dépend de la partition de couche. Tout comme une application s'exécute sur une seule machine, mais elle suit une architecture à trois couches, nous pouvons donc dire que l'architecture de couche pourrait exister dans une architecture à plusieurs niveaux. En termes simples, l'architecture à 3 couches peut être mise en œuvre sur une seule machine, alors nous pouvons dire que c'est une architecture à 1 niveau. Si nous implémentons chaque couche sur une machine distincte, son architecture s'appelle 3 niveaux. Une couche peut également exécuter plusieurs niveaux. Composant lié à l'architecture de couche pour communiquer facilement entre eux.
Tout comme nous suivons l'architecture donnée ci-dessous

  1. couche de présentation
  2. couche logique métier
  3. couche d'accès aux données

Un client peut interagir avec la "couche de présentation", mais il accède au composant public de la couche inférieure (comme le composant public de la couche logique métier) à la "couche logique métier" pour des raisons de sécurité.
Q * Pourquoi utilisons-nous l'architecture de couche? parce que si nous implémentons une architecture de couche, nous augmentons l'efficacité de nos applications comme

==> sécurité

==> gérabilité

==> évolutivité

d'autres besoins comme après avoir développé une application, nous devons changer dbms ou modifier la logique métier, etc., il est nécessaire à tous.

Q * Pourquoi utilisons-nous l'architecture de niveau?

parce que l'implémentation physique de chaque couche donne une meilleure efficacité, sans architecture de couche, nous ne pouvons pas implémenter une architecture de niveau. une machine distincte pour implémenter un niveau séparé et un niveau séparé consiste à implémenter une ou plusieurs couches, c'est pourquoi nous l'utilisons.
il utilise à des fins de tolérance aux pannes. ==> facile à entretenir.

Exemple simple

Tout comme une banque ouverte dans une chambre, dans quelles catégories l'employé:

  1. gardien de porte
  2. une personne pour de l'argent
  3. une personne chargée d'introduire un système bancaire
  4. directeur

ils sont tous les composants connexes du système.

Si nous allons à la banque à des fins de prêt, un gardien de porte ouvre d'abord la porte avec le sourire, après quoi nous nous rendons près d'une personne qui présente tout le système de prêt, après quoi nous allons dans la cabine du gestionnaire et passons le prêt. Après cela, finalement, nous allons au comptoir du caissier prendre un prêt. Ce sont des architectures de couches de banque.

Et le niveau? Ouverture d'une agence bancaire dans une ville, après celle d'une autre ville, puis celle d'une autre mais quelle est l'exigence de base de chaque agence

  1. gardien de porte
  2. une personne pour de l'argent
  3. une personne chargée d'introduire un système bancaire
  4. directeur

exactement le même concept de couche et de niveau.

atul
la source
Grande explication chère
Dulaj Kulathunga
6

Les couches sont la séparation logique d' related-functionality[code] une application, la communication entre les couches est explicite et faiblement couplée. [Logique de présentation, logique d'application, logique d'accès aux données]

Les niveaux sont la séparation physique de layers[qui sont hébergés sur des serveurs individuels] dans un ordinateur individuel (processus).

entrez la description de l'image ici

Comme le montre le diagramme:

1-Tier & 3-Layers « App Logic  with out DB access store data in a files.
2-Tier & 3-Layers « App Logic & DataStorage-box.
2-Tier & 2-Layers « Browser View[php] & DataStorage[procedures]
2-Tier & 1-Layers « Browser View[php] & DataStorage, query sending is common.
3-Tier & n-Layer  « Browser View[php], App Logic[jsp], DataStorage

n- Avantages de niveau :
meilleure
évolutivité de la sécurité : à mesure que votre organisation se développe Vous pouvez étendre votre niveau DB avec le clustering DB sans toucher à d'autres niveaux.
Maintenabilité : le concepteur Web peut modifier le code d'affichage sans toucher aux autres couches des autres niveaux. Mettez à niveau ou améliorez
facilement [Ex: vous pouvez ajouter un code d'application supplémentaire, mettre à niveau la zone de stockage, ou même ajouter plusieurs couches de présentation pour des appareils distincts comme les mobiles, les tablettes, les ordinateurs]

Yash
la source
6

J'aime la description ci-dessous du Guide d'architecture d'application Microsoft 2

Les couches décrivent les regroupements logiques des fonctionnalités et des composants d'une application; tandis que les niveaux décrivent la distribution physique des fonctionnalités et des composants sur des serveurs, ordinateurs, réseaux ou emplacements distants distincts. Bien que les couches et les niveaux utilisent le même ensemble de noms (présentation, entreprise, services et données), n'oubliez pas que seuls les niveaux impliquent une séparation physique.

sanjaykumar81
la source
5

J'utilise des couches pour décrire l'architecte ou la pile technologique au sein d'un composant de mes solutions. J'utilise des niveaux pour regrouper logiquement ces composants généralement lorsqu'une communication réseau ou interprocessus est impliquée.

Brian Matthews
la source
1

Techniquement, un niveau peut être une sorte d'environnement minimum requis pour l'exécution du code.

Par exemple, une application à 3 niveaux peut fonctionner sur

  1. 3 machines physiques sans OS.
  2. 1 machine physique avec 3 machines virtuelles sans OS.

    (C'était une application de niveau 3 (matériel))

  3. 1 machine physique avec 3 machines virtuelles avec 3 OS différents / identiques

    (C'était une application de niveau 3- (OS))

  4. 1 machine physique avec 1 machine virtuelle avec 1 OS mais 3 AppServers

    (C'était une application de niveau 3 (AppServer))

  5. 1 machine physique avec 1 machine virtuelle avec 1 OS avec 1 AppServer mais 3 SGBD

    (C'était une application de niveau 3- (SGBD))

  6. 1 machine physique avec 1 machine virtuelle avec 1 OS avec 1 AppServers et 1 SGBD mais 3 classeurs Excel.

    (C'était une application de niveau 3 (AppServer))

Le classeur Excel est l'environnement minimal requis pour l'exécution du code VBA.

Ces 3 classeurs peuvent être installés sur un seul ordinateur physique ou sur plusieurs.

J'ai remarqué que dans la pratique, les gens signifient «niveau OS» lorsqu'ils disent «niveau» dans le contexte de description de l'application.

C'est-à-dire que si une application s'exécute sur 3 systèmes d'exploitation distincts, c'est une application à 3 niveaux.

Donc, une façon pédantiquement correcte de décrire une application serait

Application «1 à 3 niveaux, fonctionnant sur 2 niveaux».

:)


Les couches ne sont que des types de code en ce qui concerne la séparation fonctionnelle des tâches avec l'application (par exemple, présentation, données, sécurité, etc.)

Dimitri KOH
la source
0

Les couches sont des entités conceptuelles et sont utilisées pour séparer la fonctionnalité du système logiciel d'un point de vue logique; lorsque vous implémentez le système, vous organisez ces couches en utilisant différentes méthodes; dans cette condition, nous les appelons non pas des couches mais des niveaux.

gst
la source
0

Lorsque vous parlez de présentation, de service, de données, de couche réseau, vous parlez de couches. Lorsque vous les "déployez séparément", vous parlez de niveaux.

Les niveaux sont tout au sujet du déploiement. Prenez-le de cette façon: nous avons une application qui a un frontend créé en angulaire, il a un backend comme MongoDB et une couche intermédiaire qui interagit entre le frontend et le backend. Ainsi, lorsque cette application frontale, l'application de base de données et la couche intermédiaire sont toutes déployées séparément, nous disons qu'il s'agit d'une application à 3 niveaux.

Avantage: si nous avons besoin de faire évoluer notre backend à l'avenir, nous avons seulement besoin de faire évoluer le backend de manière indépendante et il n'est pas nécessaire d'augmenter le frontend.

Aarzoo Trehan
la source