2010-04-14 8 views
1

Je suis confus au sujet des différentes possibilités d'exprimer une architecture à 3 niveaux.L'architecture à trois niveaux et le terme mishmash

Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

ou

Database (aka Backend) 
Business-Layer 
Presentation Layer (User Interface) 

Pourquoi pouvez-vous ignorer la base de données dans la 1ère approche? Les deux utilisent une base de données! La base de données appartient-elle à la superposition ou non ?!

Qu'est-ce qui ne va pas et qu'est-ce qui ne va pas?

Quelqu'un d'entre vous peut-il clarifier cela?

Répondre

3
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

Data-Access-couche est pas nécessairement une base de données. Ce pourrait être un fichier XML. Ce pourrait être un fil RSS. Ce pourrait être une application externe. Cela pourrait être quelque chose que vous aimez qui obtient des données dans votre application.

Il est vraiment:

[Data-Source] 
Data-Access-Layer 
Business-Layer 
Presentation Layer (User Interface) 

[Data-Source] est la base de données, XML, RSS, peu importe ... Je préfère penser à lui-même source de données en tant que pilote, pas une couche.

La flexibilité de cette approche vous permet d'échanger votre source de données sans toucher au reste de l'application. Donc, si vous avez commencé par utiliser des fichiers XML comme données principales, et que vous voulez ensuite les remplacer par une base de données, vous ne touchez que la couche DAL - le reste de l'application ne se soucie pas tant qu'elle obtient données dans le même format.

+0

le terme source de données est interessant. Pour moi, ce terme dit que la base de données n'a pas de logique. Cette hypothèse est-elle correcte? À quoi sert ma base de données pour toute la logique métier? Est-ce que j'ai encore un Business-Layer? – Rookian

+0

Vous constaterez qu'il y a beaucoup de discussions sur la question de savoir s'il est "correct" de mettre la logique métier dans une base de données. Que faire si vous décidez de changer les serveurs de base de données de MS SQL à MySQL? Soudain, vous devez réécrire votre logique métier. Que faire si vous supprimez complètement la base de données et utilisez XML à la place? Votre logique est partie. De plus, si vous avez une logique d'entreprise qui n'a aucun sens d'être dans la base de données, vous maintenez la logique métier à deux endroits - une mauvaise idée. D'autres fois, la logique métier ne peut fonctionner que dans le contexte de la base de données. Vous devez adapter l'abstraction à votre situation particulière –

+0

http://en.wikipedia.org/wiki/Business_logic propose des articles des deux points de vue. –

0

Avez-vous considéré que votre dal ne peut pas utiliser une base de données, il pourrait utiliser un fichier xml?

La première approche utilise un concept plus abstrait qui est ce qu'est la couche à trois niveaux.

Le contenu de chaque couche dépend de l'implémentation des niveaux. Yuo peut trouver que vous mélangez vos couches entre les «programmes» GUI/DB/BizLogic, mais dans l'abstrait vous maintenez toujours ces couches.

Data-Access-couche
Business-couche
couche de présentation (User Interface)

Considérant ce qui précède, vous peut wirte code qui se connecte à votre base de données. Est-ce le DAL ou la logique?

Je considérerais que le DAL que vous écrivez au code pour accéder aux données.

0

Présentation Niveau
C'est le niveau le plus élevé de l'application. Le niveau de présentation affiche des informations relatives à des services tels que la navigation, l'achat et le contenu du panier. Il communique avec les autres niveaux en fournissant des résultats au niveau navigateur/client et à tous les autres niveaux du réseau. Le niveau logique est retiré du niveau de présentation et, en tant que sa propre couche, il contrôle les fonctionnalités d'une application en effectuant un traitement détaillé.
Niveau de données
Ce niveau comprend des serveurs de base de données. Ici, les informations sont stockées et récupérées. Ce niveau conserve les données neutres et indépendantes des serveurs d'applications ou de la logique métier. Donner des données à son propre niveau améliore également l'évolutivité et les performances.

Voir ci-dessous pour plus de détails:
http://en.wikipedia.org/wiki/Multitier_architecture

0

Le groupe Patterns and Practices de Microsoft a un excellent architecture guide qui présente toutes les variantes de ce problème. Il est légèrement axé sur .NET, mais est très applicable à n'importe quel environnement. Hautement recommandé.