web-dev-qa-db-fra.com

Qu'est-ce que l'architecture N-Tier?

J'ai récemment vu plusieurs offres d'emploi de développeurs qui incluent une phrase qui se lit plus ou moins ainsi: "Doit avoir une expérience de l'architecture N-Tier" ou "Doit être capable de développer des applications N-Tier".

Cela m'amène à me demander quelle est l'architecture N-Tier. Comment gagne-t-on de l'expérience avec cela?

188
Joshua Carmody

Wikipedia :

En génie logiciel, une architecture à plusieurs niveaux (souvent appelée architecture à plusieurs niveaux) est une architecture client-serveur dans laquelle la présentation, le traitement de l'application et la gestion des données sont des processus logiquement distincts. Par exemple, une application qui utilise un middleware pour traiter les demandes de données entre un utilisateur et une base de données utilise une architecture à plusieurs niveaux. L'utilisation la plus répandue de "l'architecture à plusieurs niveaux" fait référence à une architecture à trois niveaux.

Ce qui compte en tant que "niveaux" est discutable, mais à mon avis, il doit au moins franchir les limites du processus. Ou alors ça s'appelle des calques. Mais il n’est pas nécessaire que la machine soit physiquement différente. Bien que je ne le recommande pas, vous pouvez héberger le niveau logique et la base de données sur la même boîte.

alt text

Modifier : Une des implications est que le niveau de présentation et le niveau logique (parfois appelé couche de logique métier) doivent franchir les limites de la machine "de bout en bout", parfois sur des bases peu fiables. , réseau lent et/ou peu sûr. Ceci est très différent de la simple application de bureau où les données résident sur la même machine que des fichiers ou de l'application Web où vous pouvez accéder directement à la base de données.

Pour la programmation à plusieurs niveaux, vous devez regrouper les données dans une sorte de forme transportable appelée "ensemble de données" et les survoler. La classe DataSet de Web .NET ou le protocole de services Web tel que SOAP sont rares.

244
Eugene Yokota

Cela dépend de la manière dont vous séparez la couche de présentation de la logique métier principale et de l'accès aux données ( Wikipedia )

-tier signifie couche de présentation + couche de composants + couche d'accès aux données. N-tier, c’est lorsque des couches inutiles sont ajoutées au-delà de ces trois couches et qu’elles sont étiquetées avec un mot à la mode. Il ne semble donc pas que vos architectes soient un groupe de crack. Je dis cela en fonction de l'architecture N-tier avec laquelle je dois travailler.

22
tsilb

Il s’agit d’un mot à la mode qui fait référence à des éléments tels que l’architecture Web classique, par exemple Javascript - ASP.Net - Middleware - Couche base de données. Chacune de ces choses est un "niveau".

16
1800 INFORMATION

Si je comprends la question, alors il me semble que le questionneur demande vraiment "OK, donc le 3-tiers est bien compris, mais il semble y avoir un mélange de battage publicitaire, de confusion et d'incertitude sur ce que le 4-tiers, ou généraliser, cela signifie les architectures à plusieurs niveaux. Alors… quelle est la définition du niveau à trois qui est bien comprise et acceptée? "

C'est en fait une question assez profonde, et pour expliquer pourquoi, je dois aller un peu plus loin. Ours avec moi.

L'architecture classique à 3 niveaux: base de données, "logique applicative" et présentation est un bon moyen de clarifier la manière de respecter le principe de la séparation des préoccupations. Autrement dit, si je veux changer la façon dont "l'entreprise" veut servir ses clients, je ne devrais pas avoir à regarder dans tout le système pour savoir comment procéder, et en particulier, les décisions ne devraient pas être éparpillées. bon gré mal gré à travers le code.

Maintenant, ce modèle a bien servi pendant des décennies et il s’agit du modèle classique "client-serveur". Avance rapide vers les offres dans le cloud, où les navigateurs Web constituent l’interface utilisateur d’un large groupe d’utilisateurs, ce qui oblige généralement à ajouter des services de distribution de contenu, qui ne font pas partie de l’architecture classique à 3 niveaux (et qui doivent être gérés de manière autonome).

Le concept généralise les services, les micro-services, la répartition des données et des calculs, etc. Que ce soit ou non quelque chose est un "niveau" dépend en grande partie de savoir si le niveau fournit une interface et un modèle de déploiement aux services qui sont derrière (ou sous) le niveau. Ainsi, un réseau de distribution de contenu serait un niveau, mais pas un service d'authentification.

Lisez maintenant d'autres descriptions d'exemples d'architectures à plusieurs niveaux en gardant à l'esprit ce concept, et vous commencerez à comprendre le problème. D'autres perspectives incluent les approches basées sur les fournisseurs (par exemple, NGINX), les équilibreurs de charge sensibles au contenu, les services d'isolation des données et de sécurité (par exemple, IBM Datapower), qui peuvent ou non ajouter de la valeur à une architecture donnée, déploiement, et cas d'utilisation.

4
Dak

Les applications de données à plusieurs niveaux sont des applications de données séparées en plusieurs niveaux. Également appelées "applications distribuées" et "applications à plusieurs niveaux", les applications à plusieurs niveaux séparent le traitement en niveaux distincts distribués entre le client et le serveur. Lorsque vous développez des applications qui accèdent aux données, vous devez clairement séparer les différents niveaux de l’application.

Une application typique à plusieurs niveaux comprend un niveau de présentation, un niveau intermédiaire et un niveau de données. Le moyen le plus simple de séparer les différents niveaux dans une application à plusieurs niveaux consiste à créer des projets distincts pour chaque niveau à inclure dans votre application. Par exemple, le niveau présentation peut être une application Windows Forms, tandis que la logique d'accès aux données peut être une bibliothèque de classes située dans le niveau intermédiaire. De plus, la couche de présentation peut communiquer avec la logique d'accès aux données du niveau intermédiaire via un service tel qu'un service. Séparer les composants de l'application en plusieurs niveaux augmente la maintenabilité et l'évolutivité de l'application. Pour ce faire, il facilite l'adoption de nouvelles technologies pouvant être appliquées à un seul niveau sans qu'il soit nécessaire de redéfinir la solution dans son ensemble. En outre, les applications à plusieurs niveaux stockent généralement des informations sensibles dans le niveau intermédiaire, ce qui maintient l'isolation du niveau de présentation.

Tiré de Microsoft site web .

4
Robert Rocha

Lors de la construction du MCV habituel (architecture à 3 niveaux), on peut décider de mettre en œuvre le MCV avec des interfaces à deux niveaux, de sorte que l'on puisse remplacer un niveau particulier sans avoir à modifier une seule ligne de données. code.

Nous en voyons souvent les avantages, par exemple dans les cas où vous souhaitez pouvoir utiliser plusieurs bases de données (auquel cas vous avez une double interface entre la couche de contrôle et la couche de données).

lorsque vous le placez sur la couche View (présentation), alors vous pouvez (attendre !!) remplacer l'interface USER par un autre ordinateur, automatisant ainsi l'entrée REAL (!!!) - et vous pouvez lancez ainsi des tests d'utilisabilité fastidieux des milliers de fois sans qu'aucun utilisateur n'ait à taper, taper et retaper à nouveau les mêmes choses encore et encore.

Certains décrivent une telle architecture à 3 niveaux avec une ou deux interfaces doubles sous la forme d'une architecture à 4 niveaux ou à 5 niveaux, impliquant implicitement le interfaces.

D'autres cas incluent (sans s'y limiter) le fait que, dans le cas de systèmes de bases de données partiellement ou totalement répliqués, vous seriez en mesure de considérer l'une des bases de données comme le "maître", ce qui vous donnerait un niveau comprenant du maître et un autre comprenant de la base de données esclave.

Exemple mobile

Par conséquent, multi-tier - ou N-tier - a en effet quelques interprétations, alors que je me contenterais sûrement des 3 tiers + niveaux supplémentaires comprenant des disques à interface mince coincés entre les deux pour permettre à ce dernier -swaps, et en termes de test (particulièrement utilisé sur les appareils mobiles), vous pouvez maintenant exécuter des tests utilisateur sur le logiciel réel, en simulant le tapotement d'utilisateurs d'une manière que la logique de contrôle ne peut pas distinguer d'un réel tapotement de l'utilisateur. Ceci est presque primordial dans simulation de tests utilisateur réels, dans la mesure où vous pouvez enregistrer toutes les entrées de l'OTA des utilisateurs, puis réutiliser les mêmes entrées lors des tests de régression.

3
David Svarrer

Les applications de données à plusieurs niveaux sont des applications de données séparées en plusieurs niveaux. Également appelées "applications distribuées" et "applications à plusieurs niveaux", les applications à plusieurs niveaux séparent le traitement en niveaux distincts distribués entre le client et le serveur. Lorsque vous développez des applications qui accèdent aux données, vous devez clairement séparer les différents niveaux de l’application.

Et ainsi de suite dans http://msdn.Microsoft.com/en-us/library/bb384398.aspx

3
olyv

Je crois comprendre que N-Tier sépare la logique d’entreprise, l’accès client et les données les unes des autres à l’aide de machines physiques distinctes. La théorie est que l’un d’eux peut être mis à jour indépendamment des autres.

3
GregD

Lorsque nous parlons de niveaux, nous parlons généralement de processus physiques (ayant un espace mémoire différent).

Ainsi, si les couches d'une application sont déployées dans différents processus, ces différents processus constitueront des niveaux différents.

Par exemple, dans une application à 3 niveaux, le niveau métier communique avec les ordinateurs centraux (processus distinct) et avec le service de rapport (processus distinct), puis cette application serait un processus sur 5 niveaux.

Par conséquent, le nom générique est n-tier.

2
Sandeep Jindal

à partir de https://docs.Microsoft.com/en-us/Azure/architecture/guide/architecture-styles/n-tier

Une architecture à plusieurs niveaux divise un application pneus en pneus logiques et Les niveaux physiques sont principalement divisés en sous-parties. enter image description here

Les couches sont un moyen de séparer les responsabilités et de gérer les dépendances. Chaque couche a une responsabilité spécifique. Une couche supérieure peut utiliser des services dans une couche inférieure, mais pas l'inverse.

Les niveaux sont physiquement séparés, fonctionnant sur des machines distinctes. Un niveau peut appeler directement un autre niveau ou utiliser une messagerie asynchrone (file d'attente de messages). Bien que chaque couche puisse être hébergée dans son propre niveau, cela n'est pas obligatoire. Plusieurs couches peuvent être hébergées sur le même niveau. La séparation physique des niveaux améliore l'évolutivité et la résilience, mais ajoute également du temps de latence à la communication réseau supplémentaire.

Une application classique à trois niveaux comporte un niveau de présentation, un niveau intermédiaire et un niveau de base de données. Le niveau intermédiaire est facultatif. Les applications plus complexes peuvent avoir plus de trois niveaux. Le diagramme ci-dessus montre une application avec deux niveaux intermédiaires, encapsulant différentes zones de fonctionnalités.

Une application à plusieurs niveaux peut avoir une architecture de couche fermée ou une architecture de couche ouverte:

In a closed layer architecture, a layer can only call the next layer immediately down.
In an open layer architecture, a layer can call any of the layers below it.

Une architecture de couche fermée limite les dépendances entre les couches. Toutefois, cela peut créer un trafic réseau inutile si une couche transmet simplement les demandes à la couche suivante.

2
Manjitha teshara

Martin Fowler démontrant clairement:

La superposition est l'une des techniques les plus courantes utilisée par les concepteurs de logiciels pour décomposer un système logiciel complexe. Vous le voyez dans les architectures de machines, où les couches dérivent d'un langage de programmation avec des appels du système d'exploitation dans des pilotes de périphérique et des jeux d'instructions de la CPU, ainsi que dans des portes logiques à l'intérieur de puces. La mise en réseau a FTP couché sur TCP, qui est sur IP, qui est sur Ethernet.

Lorsque vous pensez à un système en termes de couches, vous imaginez les principaux sous-systèmes du logiciel organisés sous forme de gâteau de couche, chaque couche reposant sur une couche inférieure. Dans ce schéma, la couche supérieure utilise divers services définis par la couche inférieure, mais la couche inférieure ignore la couche supérieure. De plus, chaque couche cache généralement ses couches inférieures des couches situées au-dessus. La couche 4 utilise donc les services de la couche 3, qui utilise les services de la couche 2, mais la couche 4 ignore la couche 2. (Toutes les architectures de couches ne sont pas aussi opaques) , mais la plupart sont, ou plutôt, la plupart du temps opaques.)

Décomposer un système en couches présente un certain nombre d'avantages importants.

• Vous pouvez comprendre une seule couche comme un tout cohérent sans en savoir beaucoup sur les autres couches. Vous pouvez comprendre comment créer un service FTP sur TCP sans connaître les détails du fonctionnement d’Ethernet.

• Vous pouvez remplacer les couches par d'autres implémentations des mêmes services de base. Un service FTP peut fonctionner sans modification via Ethernet, PPP ou tout autre moyen utilisé par un câblo-opérateur.

• Vous réduisez les dépendances entre les couches. Si le câblodistributeur modifie son système de transmission physique, à condition qu’il fonctionne avec l’IP, nous n’avons pas à modifier notre service FTP.

• Les couches sont de bons endroits pour la normalisation. TCP et IP sont des standards car ils définissent le fonctionnement de leurs couches.

• Une fois la couche créée, vous pouvez l’utiliser pour de nombreux services de niveau supérieur. Ainsi, TCP/IP est utilisé par FTP, telnet, SSH et HTTP. Sinon, tous ces protocoles de niveau supérieur devraient écrire leurs propres protocoles de niveau inférieur. De la bibliothèque de Kyle Geoffrey Passarelli

La superposition est une technique importante, mais il y a des inconvénients.

• Les couches encapsulent certaines choses, mais pas toutes. En conséquence, vous obtenez parfois des modifications en cascade. L'exemple classique dans une application d'entreprise en couches consiste à ajouter un champ qui doit être affiché sur l'interface utilisateur, doit être dans la base de données et doit donc être ajouté à chaque couche intermédiaire.

• Des couches supplémentaires peuvent nuire aux performances. À chaque couche, les choses doivent généralement être transformées d'une représentation à une autre. Cependant, l’encapsulation d’une fonction sous-jacente vous procure souvent des gains d’efficacité plus que compenser. Une couche qui contrôle les transactions peut être optimisée et va tout rendre plus rapide. Mais la partie la plus difficile d'une architecture en couches est de décider quelles couches doivent avoir et quelle doit être la responsabilité de chaque couche.

0
Hamit YILDIRIM