Ce qui est architecture N-tiers?

J'ai vu quelques offres d'emploi de développeur récemment qui incluent une phrase qui se lit plus ou moins comme ceci: "doit avoir de l'expérience avec l'architecture N-Tier", ou "doit être capable de développer des applications n-Tier".

Cela m'amène à demander, qu'est-ce que l'architecture N-Tier? Comment acquérir de l'expérience avec elle?

176
demandé sur naXa 2008-11-23 09:01:05

10 réponses

Wikipédia:

En génie logiciel, multi-niveaux architecture (souvent appelée architecture n-tiers) est un architecture client-serveur dans laquelle, la présentation, l'application le traitement et la gestion des données sont processus logiquement séparés. Pour exemple, une application qui utilise middleware pour traiter les demandes de données entre un utilisateur et une base de données emploie architecture multi-niveaux. La plupart des utilisation généralisée de " multi-tier architecture" fait référence à trois niveaux architecture.

Il est discutable ce qui compte comme "niveaux", mais à mon avis, il doit au moins franchir la limite du processus. Ou bien ça s'appelle des couches. Mais, il n'a pas besoin d'être physiquement différentes machines. 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.

le texte d'alt

Edit : une implication est ce niveau de présentation et le niveau logique (parfois appelé couche Logique métier) doit traverser les limites de la machine" à travers le fil " parfois sur un réseau peu fiable, lent et/ou non sécurisé. Ceci est très différent de l'application de bureau simple où les données vivent sur la même machine que les fichiers ou L'Application Web où vous pouvez frapper la base de données directement.

Pour la programmation À n niveaux, vous devez emballer les données sous une forme transportable appelée "dataset" et les survoler. La classe DataSet ou le protocole Web Services de. Net comme savon sont quelques-unes de ces tentatives de voler des objets sur le fil.

235
répondu Eugene Yokota 2017-02-08 14:09:13

Il est basé sur la façon dont vous séparez la couche de présentation de la logique métier de base et de l'accès aux données (Wikipedia )

3-tier signifie couche de présentation + couche de Composant + couche D'accès aux données. N-tier est quand des couches inutiles sont ajoutées au-delà de ces trois et il est étiqueté avec un mot à la mode de sorte qu'il ne semble pas que vos architectes sont un tas de singes crack. Je dis cela basé sur l'architecture n-tier avec laquelle je dois travailler.

20
répondu tsilb 2008-11-23 06:13:25

C'est un mot à la mode qui fait référence à des choses comme l'architecture web normale avec, par exemple, Javascript - ASP.Net -Middleware-couche de base de données. Chacune de ces choses est un "niveau".

15
répondu 1800 INFORMATION 2008-11-23 06:04:29

Si je comprends la question, alors il me semble que le questionneur demande vraiment " OK, donc 3-tier est bien compris, mais il semble qu'il y ait un mélange de battage médiatique, de confusion et d'incertitude autour de ce que signifient les architectures 4-tier, ou pour généraliser, n-tier. Si...qu'est-ce qu'une définition de n-tier qui est largement comprise et convenue?"

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

Le classique à 3 niveaux architecture: base de données," business logic " et présentation, est un bon moyen de clarifier comment honorer le principe de séparation des préoccupations. C'est-à-dire, si je veux changer la façon dont "l'entreprise" veut servir les clients, Je ne devrais pas avoir à regarder à travers l'ensemble du système pour comprendre comment faire cela, et en particulier, les décisions les problèmes d'affaires ne devraient pas être dispersés bon gré mal gré dans le code.

Maintenant, ce modèle a bien servi pendant des décennies, et c'est le classique "client-serveur" modèle. Avance rapide vers les offres cloud, où les navigateurs web sont l'interface utilisateur pour un ensemble large et physiquement distribué d'utilisateurs, et on finit généralement par avoir à 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 dans leur propre droit).

Le concept généralise en ce qui concerne les services, les micro-services, la façon dont les données et le calcul sont distribués et ainsi de suite. Que quelque chose soit ou non un "niveau" vient en grande partie jusqu'à savoir si le niveau fournit ou non une interface et un modèle de déploiement aux services qui sont derrière (ou en dessous) le niveau. Ainsi, un réseau de distribution de contenu serait d'un niveau, mais un service d'authentification ne serait pas.

Maintenant, allez lire d'autres descriptions d'exemples d'architectures n-tier avec ce concept à l'esprit, et vous commencerez à comprendre le problème. D'autres perspectives incluent les approches basées sur le fournisseur (par exemple NGINX), les équilibreurs de charge conscients du contenu, l'isolation des données et services de sécurité (par exemple IBM Datapower), qui tous peuvent ou non ajouter de la valeur à une architecture, un déploiement et des cas d'utilisation donnés.

4
répondu Dak 2016-01-16 19:06:57

Je crois comprendre que N-Tier sépare la logique métier, l'accès client et les données les unes des autres en utilisant des machines physiques séparées. La théorie est que l'un d'eux peut être mis à jour indépendamment des autres.

3
répondu GregD 2008-11-23 06:04:25

Les applications de données à n niveaux sont des applications de données séparées en plusieurs niveaux. Également appelées "applications distribuées" et "applications multitier", les applications à n niveaux séparent le traitement en niveaux discrets qui sont distribués entre le client et le serveur. Lorsque vous développez des applications d'accès aux données, vous devriez avoir une séparation claire entre les différents niveaux qui composent l'application.

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

3
répondu olyv 2014-09-22 05:50:44

Les applications de données de niveau N sont des applications de données séparées en plusieurs niveaux. Aussi appelé "applications distribuées" et "multi-niveaux applications, " les applications de niveau n séparent le traitement en niveaux qui sont distribués entre le client et le serveur. Lorsque vous développer des applications qui accèdent aux données, vous devriez avoir un clair la séparation entre les différents niveaux qui composent l'application.

Une application n-tier typique comprend un niveau de présentation, un milieu tier, et une couche de données. La meilleure façon de séparer les différents niveaux dans une application n-tier est de créer des projets discrets pour chaque niveau que vous souhaitez inclure dans votre demande. Par exemple, l' niveau de présentation peut être une application Windows Forms, alors que le la logique d'accès aux données peut être une bibliothèque de classes située au niveau intermédiaire. En outre, la couche de présentation peut communiquer avec les données logique d'accès au niveau intermédiaire via un service tel qu'un service. La séparation des composants d'application en niveaux séparés augmente la la maintenabilité et l'évolutivité de l'application. Il le fait en faciliter l'adoption de nouvelles technologies pouvant être appliquées à un niveau unique sans l'exigence de redessiner l'ensemble de la solution. Dans en outre, les applications de niveau n stockent généralement des informations sensibles dans le niveau intermédiaire, qui maintient l'isolement du niveau de présentation.

Extrait de Microsoft site web.

3
répondu Robert Rocha 2015-02-07 14:17:33

Lors de la construction du MCV habituel (une architecture à 3 niveaux), on peut décider d'implémenter le MCV avec des interfaces à double pont, de sorte que l'on peut en fait remplacer un niveau particulier sans avoir à modifier une seule ligne de code.

Nous voyons souvent les avantages de ce, par exemple dans les scénarios où vous voulez pouvoir utiliser plus d'une base de données (auquel cas vous avez une double interface entre les couches de contrôle et de données).

Quand vous le mettez sur le View-layer (présentation), alors vous pouvez (attendez!!) remplacez l'interface utilisateur par une autre machine, automatisez ainsi L'entrée réelle (!!!) et vous pouvez ainsi exécuter fastidieux tests d'utilisabilité des milliers de fois sans avoir à taper et ré-appuyez sur et re-re-appuyez sur les mêmes choses encore et encore.

Certains décrivent une telle architecture à 3 niveaux avec 1 ou 2 interfaces doubles comme architecture à 4 niveaux ou architecture à 5 niveaux, impliquant implicitement la double-interfaces.

D'autres cas incluent (mais ne sont pas limités à) le fait que vous - dans le cas de bases de données semi-ou entièrement répliquées-les systèmes seraient pratiquement en mesure de considérer l'une des bases de données comme le "maître", et ainsi vous auriez un niveau comprenant du maître et un autre comprenant de la base de données esclave.

Mobile exemple

Par conséquent, multi-tier-ou n-tier - a en effet quelques interprétations, alors que je m'en tiendrais sûrement pour les 3 niveaux + niveaux supplémentaires comprenant des disques d'interface minces coincés entre eux pour permettre lesdits swaps de niveaux, et en termes de tests (particulièrement utilisés sur les appareils mobiles), vous pouvez maintenant exécuter des tests utilisateur sur le logiciel réel, en simulant un utilisateur tapant d'une manière que la logique de commande ne peut pas distinguer Ceci est presque primordial dans simulant des tests utilisateur réels , en ce sens que vous pouvez enregistrer toutes les entrées de l'OTA des utilisateurs, puis réutiliser la même entrée lors de l'exécution des tests de régression.

3
répondu David Svarrer 2017-05-01 19:57:49

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

Ainsi, dans le cas où des couches d'une application sont déployées dans différents processus, ces différents processus seront différents niveaux.

Par exemple, dans une application à 3 niveaux, business tier parle aux Mainframes (processus séparé) et parle au Reporting Service (processus séparé), alors cette application serait à 5 niveaux.

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

2
répondu Sandeep Jindal 2015-01-08 18:01:48

À Partir de https://docs.microsoft.com/en-us/azure/architecture/guide/architecture-styles/n-tier

Une architecture à n niveaux divise un pneus d'application en pneus logiques etniveaux physiques principalement et leur sont divisés en sous-parties. entrez la description de l'image ici

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 autour.

Les niveaux sont physiquement séparés, s'exécutant sur des machines séparées. 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, ce n'est pas nécessaire. 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 la latence de la communication réseau supplémentaire.

Une application traditionnelle à trois niveaux a une présentation niveau, 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érents domaines de fonctionnalité.

Une application à n 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. Cependant, il peut créer du trafic réseau inutile, si une couche transmet simplement les requêtes à la couche suivante.

2
répondu teran teshara 2018-07-21 02:15:58