Question

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 l'expérience de l'architecture à plusieurs niveaux", ou "Doit pouvoir développer des applications à plusieurs niveaux" ;.

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

Était-ce utile?

La solution

Wikipedia :

  

En génie logiciel, multiniveau   architecture (souvent appelée   architecture à plusieurs niveaux) 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   Par exemple, une application qui utilise   middleware pour traiter les demandes de données   entre un utilisateur et une base de données emploie   architecture à plusieurs niveaux. Le plus   utilisation généralisée de "multi-tier   architecture " se réfère à trois niveaux   architecture.

On peut discuter de ce qui compte comme "niveaux", " mais à mon avis, il faut 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 la couche logique et la base de données sur la même boîte.

alt text

Modifier : le niveau de présentation et le niveau de logique (parfois appelé couche de logique métier) impliquent de franchir les limites de la machine "de bout en bout". parfois sur des réseaux peu fiables, lents et / ou peu sûrs. Ceci est très différent de la simple application de bureau où les données résident sur le même ordinateur que les fichiers ou 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 sous une forme transportable appelée "jeu de données". et les voler sur le fil. La classe DataSet de la classe .NET ou le protocole de services Web comme SOAP sont quelques-unes de ces tentatives de survol d'objets par le fil.

Autres conseils

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 )

à 3 niveaux signifie couche de présentation + couche de composant + couche d'accès aux données. N-tier, c’est quand 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.

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

  

Les applications de données à plusieurs niveaux sont des applications de données séparées en   plusieurs niveaux. Également appelé "applications distribuées". et "multitier   applications, " Les applications à plusieurs niveaux séparent le traitement en discret   les niveaux distribués entre le client et le serveur. Lorsque vous   développer des applications qui accèdent aux données, vous devriez avoir un   séparation entre les différents niveaux composant l’application.

     

Une application typique à plusieurs niveaux comprend un niveau de présentation, un niveau intermédiaire.   niveau, et un niveau de données. Le moyen le plus simple 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 application. Par exemple, le   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 dans le niveau intermédiaire.   En outre, la couche de présentation peut communiquer avec les données   la logique d'accès au niveau intermédiaire via un service tel qu'un service.   Séparer les composants de l’application en niveaux distincts augmente la   maintenabilité et évolutivité de l'application. Il le fait par   facilitant l’adoption de nouvelles technologies pouvant être appliquées à un   un seul niveau sans qu'il soit nécessaire de repenser toute la solution. Dans   En outre, les applications multiniveaux stockent généralement des informations sensibles dans   le niveau intermédiaire, qui maintient l'isolation du niveau de présentation.

Extrait de site Web de Microsoft.

Si je comprends la question, il me semble que le questionneur demande vraiment "OK, alors le 3-tiers est bien compris, mais il semble y avoir un mélange de battage publicitaire, de confusion et niveau, ou pour généraliser, les architectures N-tier signifie. Alors ... quelle est la définition du N-tier largement 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 préciser comment respecter le principe de la séparation des préoccupations. C’est-à-dire que si je veux changer la manière dont " l’entreprise " veut servir les clients, je ne devrais pas avoir à regarder à travers tout le système pour comprendre comment faire cela, et en particulier, les décisions des problèmes de gestion ne devraient pas être éparpillées à travers le code.

Maintenant, ce modèle a bien servi pendant des décennies. Il s’agit du modèle classique «client-serveur». Avance rapide vers les offres en nuage, où les navigateurs Web constituent l’interface utilisateur d’un large groupe d’utilisateurs, distribués de manière physique, et il est généralement nécessaire d’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 manière dont les données et les calculs sont distribués, etc. Le fait que quelque chose soit ou non un «niveau» dépend en grande partie de la question de savoir si le niveau fournit une interface et un modèle de déploiement aux services situés derrière (ou sous) le niveau. Ainsi, un réseau de distribution de contenu serait un niveau, mais pas un service d'authentification.

Maintenant, lisez attentivement d'autres descriptions d'exemples d'architectures à plusieurs niveaux, 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.

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.

Les applications de données à plusieurs niveaux sont des applications de données séparées en plusieurs niveaux. Également appelé "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

Lors de la construction du MCV habituel (architecture à 3 niveaux), vous pouvez décider de l'implémenter avec des interfaces à deux niveaux, de sorte que vous puissiez remplacer un niveau particulier sans avoir à modifier même une ligne de code.

Nous constatons souvent les avantages de cette opération , par exemple dans les cas où vous souhaitez pouvoir utiliser plusieurs bases de données (auquel cas vous disposez d'une double interface entre le contrôle et la gestion des données). couches).

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

Certains décrivent cette architecture à 3 niveaux avec 1 ou 2 interfaces doubles sous la forme d'une architecture à 4 niveaux ou à 5 niveaux , ce qui implique implicitement les doubles 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", et par conséquent aurait un niveau comprenant le maître et un autre comprenant la base de données esclave.

Exemple pour mobile

Par conséquent, le multiniveau ou N-tier a en effet quelques interprétations, alors que je me contenterais certainement des 3 tiers et des extra-tiers comprenant des disques à interface mince coincés entre Activez ces permutations de niveau et, en termes de test (en particulier sur les appareils mobiles), vous pouvez désormais exécuter des tests utilisateur sur le logiciel réel, en simulant un utilisateur tapant d'une manière que la logique de contrôle ne peut pas distinguer à partir d'un utilisateur réel tapant. Cela est presque primordial dans la 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.

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 à trois niveaux, le niveau commercial communique avec les ordinateurs centraux (processus distinct) et avec le service de rapport (processus distinct), puis cette application serait un système à 5 niveaux.

Le nom générique est donc n-tier.

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

Une architecture à plusieurs niveaux divise un pneu d'application en pneus logiques et niveaux physiques , principalement divisés en sous-composants. entrer la description de l'image ici

Les calques permettent 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 les services d’une couche inférieure, mais pas l’inverse.

Les niveaux sont physiquement séparés et s'exécutent 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 à deux niveaux intermédiaires, qui encapsule différentes 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.

Martin Fowler manifestant clairement:

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

En pensant à un système en termes de couches, vous imaginez les principaux sous-systèmes dans le logiciel arrangé sous une certaine forme de gâteau de couche, où chaque couche repose sur une couche inférieure. Dans ce schéma, la couche supérieure utilise divers services défini par la couche inférieure, mais la couche inférieure ignore la couche supérieure. En outre, chaque couche cache généralement ses couches inférieures des couches supérieures, de sorte que la couche 4 utilise les services de la couche 3, qui utilise les services de la couche 2, mais la couche 4 n'est pas au courant de la couche 2. (Toutes les architectures de couches ne sont pas aussi opaques, mais la plupart sont & # 8212; ou plutôt, la plupart sont généralement opaques.)

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

& # 8226; Vous pouvez comprendre une seule couche comme un tout cohérent sans 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.

& # 8226; Vous pouvez substituer des couches avec des implémentations alternatives du même services de base. Un service FTP peut fonctionner sans changement via Ethernet, PPP, ou ce que les câblodistributeurs utilisent.

& # 8226; Vous minimisez les dépendances entre les couches. Si le câblodistributeur change son système de transmission physique, à condition qu’ils fassent fonctionner la propriété intellectuelle, nous ne le faisons pas. modifier notre service FTP.

& # 8226; Les couches constituent de bons endroits pour la normalisation. TCP et IP sont des standards parce qu'ils définissent le fonctionnement de leurs couches.

& # 8226; Une fois que vous avez construit une couche, 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 les 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.

& # 8226; Les couches encapsulent bien certaines choses, mais pas toutes. En conséquence vous parfois obtenir des modifications en cascade. L'exemple classique de cela dans une entreprise en couches l'application ajoute un champ qui doit s'afficher sur l'interface utilisateur, doit être dans la base de données, et doit donc être ajouté à chaque couche intermédiaire.

& # 8226; Des couches supplémentaires peuvent nuire aux performances. À chaque couche, les choses doivent typiquement être transformé d'une représentation à une autre. Cependant, l'encapsulation d'une fonction sous-jacente vous donne souvent des gains d'efficacité que plus que compenser. Une couche qui contrôle les transactions peut être optimisée et va alors tout faire plus vite. Mais la partie la plus difficile d’une architecture en couches est de décider des couches à avoir. et quelle devrait être la responsabilité de chaque couche.

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