12
votes

Architecture 3 Tier vs 2 Tier Architecture

Quels sont les exemples où nous avons vraiment besoin d'une architecture de 3 niveaux? La plupart des applications utilisent l'architecture de 3 niveaux peuvent être effectuées avec une architecture de 2 niveaux?

Note: J'essaie de voir la valeur de l'architecture de 3 niveaux, je ressens la majeure partie de l'application qu'il y a 3 niveaux en ce moment peut être fait en 2 niveaux et je suis donc à la recherche d'exemples où Nous avons absolument besoin de 3 niveaux et il n'y a pas d'exception à ce besoin.


1 commentaires

"Je cherche des exemples où nous avons absolument besoin de 3 niveaux et il n'y a pas d'exception" - il n'y a vraiment rien dans cette industrie qui est cette coupe claire. En réalité, il existe des centaines de façons d'approcher chaque problème, toute approche ayant ses propres mérites. Les gens ont fait cela assez long que certaines approches émergentes qui résolvent de manière empirique plus de problèmes qu'elles ne créent - et ces approches deviennent des directives / schémas de l'industrie / des meilleures pratiques. C'est une erreur de croire que dans un contexte donné, une approche est absolument bonne alors qu'une autre approche est absolument fausse.


5 Réponses :


7
votes

Je suppose que vous voulez dire que vous médiez (unités logiques de séparation) plutôt que sur plusieurs niveaux (unités physiques de séparation / de déploiement). Un exemple de système à plusieurs niveaux serait un serveur Web (1 niveau) de livrer des pages Web (un autre niveau) qui s'appuie sur des données d'une base de données le 3ème niveau).

L'objectif habituel d'une architecture en couches est de séparer les responsabilités. Cela a deux avantages essentiels (entre autres).

Tout d'abord, votre conception sera plus claire, car les responsabilités ne seront pas soulevées et que le code sera donc plus facile à lire, à comprendre et à entretenir.

Deuxièmement, les chances sont que vous réduirez la duplication - par exemple dans une application Web si vos pages manipulent également la logique commerciale (ou l'horreur de l'accès des données d'horreurs) ainsi que l'affichage des pages, vous pouvez être assez sûr que plusieurs Les pages essaient de faire la même chose ou des choses similaires.

Vous n'êtes pas besoin à l'architecte (par exemple, dans les couches, bien qu'il existe d'autres moyens), tout élément de logiciel, mais pour tout, des choses triviales, le résultat sera un gâchis stable si vous ne faites pas ' t.


0 commentaires

-1
votes

Eh bien, si vous avez un site Web ... vous avez probablement du code JavaScript, c'est donc une fois de niveau, vous avez la logique de votre entreprise sur le serveur et que vous disposez de la base de données pour stocker des objets. C'est trois niveaux à mon avis. Bien sûr, vous pouvez utiliser des Procs stockés dans la base de données et ignorer le niveau de la logique de l'entreprise, il est donc possible de créer un site Web avec deux niveaux si vous le souhaitez, mais si vous ne souhaitez pas utiliser les PROC stockés, vous aurez trois niveaux.


5 commentaires

La logique commerciale ne devrait pas résider dans les PROC stockés ou dans la couche d'accès aux données. Je préfère voir la base de données en tant qu'objet - méthodes stockées Procs et champs qui sont les entités de données. Les Procs stockés traitent d'obtenir des données dans et hors de la base de données de la manière la plus opportune possible et de mettre en œuvre des tâches qui se prêtent à SQL - par exemple, mettre à jour une colonne basée sur une jointure sur plusieurs enregistrements.


@ZTECH, Ouais, alors quoi ..? Tout le monde a des préférences et des points de vue et "ne devrait pas". Qu'est-ce que cela a à voir avec la question de l'OP?


Le but est d'encourager de bonnes pratiques de conception. Si quelqu'un demande comment mettre plus de 512 fichiers dans le répertoire racine de Windows 95, par exemple, ma première réponse va être ", car c'est une mauvaise idée". Tenter de consolider les couches de votre application est presque toujours une mauvaise idée, et moi, pour une personne, je ne veux pas que le gars soit le gars qui entre autre et doit maintenir cette merde. Décourager la mauvaise conception dans l'industrie rend toute notre vie plus facile.


@Tuinstoel En outre, il existe un tel animal comme "bon design" et sa déterminée par plus que la préférence personnelle.


Je ne comprends toujours pas ce que vous voulez dire avec "La base de données est un objet" sauf si vous considérez tout un objet? Ce que j'ai parlé de l'utilisation d'un serveur Web qui réside dans la base de données. Ensuite, vous n'avez pas besoin d'un niveau moyen. Que ce soit une bonne idée ou non dépend de vos besoins.



3
votes

accessoires à Finnnk, mais laissez-moi vous donner un exemple de ce qui se passe lorsque vous ne séparez pas vos niveaux. J'ai travaillé pendant des années sur un projet mal séparé à la naissance. Les trois niveaux - plus, si vous croyez ce que TUINSTOEL a dit - regroupés dans des pages JSP individuelles. Je suis sûr que cela semblait être une chose intelligente à l'époque (plus vite de coder quand on commence à commencer) mais cette monstruosité a grandi et cultivée, et personne n'a pris le temps de refracteur.

Nous avons maintenant plus de 2000 pages JSP, avec un code en double dispersé. La création d'un changement de schéma nécessite une backtratage minutieuse pour déterminer quelles pages pourraient être effectuées et des tests individuels de chacune de ces pages. Personne dans la direction ne pense qu'il est suffisamment important de consacrer le temps à résoudre ce problème - gains à court terme, perte à long terme.

faire. Pas. Aller. Ce. Route.

Séparer les niveaux conduit à un code plus rapide, plus rapide, plus testable, plus modulaire. Vous vous remercierez pour cela, et (plus important encore) les personnes qui viennent après que vous vous remerciez.


0 commentaires

2
votes

Certaines bases de données exposent une interface de repos sur le monde extérieur, par exemple des bases de données NOSQL Couchdb et Ravendb. Cela signifie que la course JavaScript dans votre navigateur peut appeler la base de données sans niveau moyen.

Voir par exemple: http://www.infoq.com/news/2010 / 06 / Couchdb

"interface http / repose bien comporté et API propre et simple deux niveaux Applications (HTML + JavaScript dans le Navigateur + Couch + JavaScript sous serveur) "

Oracle a un serveur Web à l'intérieur, vous pouvez utiliser les Procs stockés qui exposent également une interface de repos au monde extérieur. Donc, le JavaScript de votre navigateur peut également appeler la base de données Oracle sans un niveau moyen.

Avez-vous toujours Besoin d'un niveau moyen lorsque tout ce que vous voulez, c'est d'obtenir des données de la base de données? Je pose des questions à ce besoin.

(TTT anciennement connu sous le nom de tuintoel)


1 commentaires

Juste curieux, comment gérez-vous la sécurité dans cette situation? Je suis intrigué.



0
votes

Première, bonne question. Comme d'autres l'ont noté, les deux ont des mérites. La "séparation de l'inquiétude" est le principal avantage de 3 niveaux et qui verse des dividendes de plusieurs manières:

  1. Sécurité: En séparant votre logique commerciale de la présentation, vous pouvez appliquer des stratégies plus strictes aux différentes couches par exemple. Les formulaires de présentation sans données ni logiques ne peuvent être dans votre zone de présentation afin que les utilisateurs anonymes puissent accéder à votre contenu «public».
  2. Maintabilité / Management - Beaucoup a déjà été dit à propos de ce
  3. Récupération de réutilisation / catastrophe: Pour l'Instace, si une application de gestion de Pharamcy voudra peut-être exposer un interface utilisateur ainsi que des services que les tiers peuvent utiliser pour placer des ordres de prescription. En séparant la logique commerciale dans une couche séparée, vous pouvez maintenir les services / logiques indépendamment de l'interface utilisateur

    Il y en a plusieurs autres mais ceux-ci donnent espoir une idée des avantages potentiels


0 commentaires