web-dev-qa-db-fra.com

MVC vs architecture à 3 niveaux?

Quelle est la différence fondamentale entre MVC et l'architecture à 3 niveaux?

65
chhaya

niveaux est un Style d'architecture et MVC est un Design Pattern =.

est donc différent en cela.

mais nous pourrions utiliser le modèle mvc dans un style d'architecture à 3 niveaux.

alors:

Niveau Présentation: "Contrôleurs et vues" de MVC Pattern.

Niveau professionnel: "Modèle (données)" de MVC Pattern.

Niveau d'accès aux données: Niveau d'accès aux données d'origine.

34
F. Farjaminejad

Dans les applications plus grandes, MVC est le niveau de présentation uniquement d'une architecture à N niveaux. Les vues et les contrôleurs de modèles ne concernent que la présentation et utilisent un niveau intermédiaire pour remplir les modèles avec des données du niveau de données.

MVC peut également être utilisé comme toute l'architecture à 3 niveaux où les vues sont votre présentation, les contrôleurs sont votre logique métier et les modèles sont votre couche de données (généralement générée par un DAL tel que Entity Framework).

Idéalement, si vous voulez que vos contrôleurs soient maigres et stupides, transmettant la logique à un `` composant métier '', qui deviendrait essentiellement votre niveau intermédiaire.

28
Michael Shimmins

Dans l'architecture à 3 niveaux, la communication entre les niveaux est bidirectionnelle. Dans le MVC, la communication est unidirectionnelle; on pourrait dire que chaque "calque" est mis à jour par celui de gauche et, à son tour, met à jour celui de droite - où "gauche" et "droite" sont simplement illustratifs.

L'architecture à 3 niveaux se déploie généralement en 3 processus distincts sur 3 nœuds de réseau distincts. Mais MVC est conçu pour se déployer en tant que processus unique dans un nœud de réseau unique. (comme une application de bureau)

Le niveau métier en 3 niveaux contient généralement différentes couches implémentant des modèles célèbres tels que délégué commercial, façade commerciale, objet métier, localisateur de services, objet de transfert de données, etc. Mais MVC est un modèle de conception lui-même utilisé dans le niveau présentation.

L'objectif de 3 niveaux est la séparation de la logique métier du client et de la base de données, donc fournissez plusieurs protocoles client, une évolutivité élevée, un accès aux données hétérogène, etc. .

17
A. Parvini

J'adopte une approche différente de ce que Michael a dit dans sa réponse.

Les contrôleurs ne sont jamais censés être votre logique métier. Pour moi, la logique métier appartient à la couche modèle. Et bien que les vues (et dans une certaine mesure les contrôleurs) et une partie de la couche de présentation, le modèle n'en fasse jamais partie dans une application MVC. Le modèle doit être le cœur et l'âme d'une application MVC et c'est tout le domaine de la conception pilotée par domaine qui peut être facilement implémenté dans une application MVC.

N'oubliez pas que vous n'avez pas besoin d'avoir le modèle dans le même projet (en parlant d'ASP.NET MVC). Il pourrait résider dans un projet entièrement différent et il peut toujours servir de modèle à l'application

Une application MVC agissant uniquement comme une couche de présentation peut fonctionner dans un projet énorme avec plusieurs niveaux, mais elle ne peut jamais agir comme une couche de présentation uniquement dans une architecture à 3 niveaux, ce que le questionneur a demandé.

Nous pouvons donc dire que MVC en fait deux (la troisième peut être la couche de données qui ne fait pas vraiment partie de l'architecture MVC en soi) à partir de trois couches d'une architecture à 3 niveaux.

Merci.

12
Imran Rashid

Il n'y a aucune relation entre les deux. MVC est un modèle de couche de présentation. L'ensemble Model-View-Controller existe dans la couche de présentation.

  • Model est un objet contenant des données (généralement juste des VO) qui sont représentées par View ou, renseignées à partir de View.

  • Controller est ce qui obtient la demande (et peut remplir le modèle) et appelle la couche service. Obtient ensuite un autre (ou même) modèle et le renvoie à View.

  • View est ce qui affiche le modèle et fournit des composants pour capturer les entrées de l'utilisateur. (Il s'agit généralement d'un moteur de modèle dans les applications Web ou de composants d'interface utilisateur dans une application de bureau).

Lorsque nous parlons d'une application à 3 niveaux (ou n niveaux), nous parlons de l'architecture de l'application entière, qui se compose de la couche de présentation (l'ensemble du MVC), de la couche de service (classes professionnelles) et de la couche d'accès aux données.

La couche de service (et tout ce qui se trouve derrière) est cachée derrière les contrôleurs de MVC.

7
Amir Pashazadeh

Qu'est-ce qu'une architecture à 3 niveaux?

Trois niveaux (couche) est une architecture client-serveur dans laquelle l'interface utilisateur, le processus métier (règles métier) et le stockage et l'accès aux données sont développés et maintenus en tant que modules indépendants ou le plus souvent sur des plateformes distinctes . Fondamentalement, il existe 3 couches, le niveau 1 (niveau présentation, niveau GUI), le niveau 2 (objets métier, niveau logique métier) et le niveau 3 (niveau accès aux données). Ces niveaux peuvent être développés et testés séparément.

DAL - Data Access Layer (il a Connectionstring et Data read & execute process)

BOL - Bussiness Object Layer (il contient des requêtes)

UI - Interface utilisateur (formulaires et code derrière)

Plus de détails: Tier Archtecture

7
user851253

Une architecture à 3 niveaux est linéaire où le niveau client ne communique jamais réellement avec le niveau de données - toutes les communications passent par le niveau intermédiaire. MVC d'autre part est plus triangulaire où la vue envoie des mises à jour au contrôleur et reçoit des mises à jour du modèle et le contrôleur met à jour le modèle.

(Voir "Comparaison avec l'architecture MVC" sur http://en.wikipedia.org/wiki/3-tier_architecture )

6
OCDev

Chaque application en possède une ou plusieurs des couches suivantes 1) Couche de présentation ou couche d'interface utilisateur 2) Couche métier ou couche logique métier 3) Couche d'accès aux données ou couche de données

architecture à 3 niveaux a généralement chaque couche séparée par le réseau. C'EST À DIRE. la couche de présentation est sur certains serveurs Web, puis qui parle aux serveurs d'applications principaux sur le réseau pour la logique métier, puis qui parle à un serveur de base de données, encore une fois sur le réseau, et peut-être que le serveur d'applications appelle également certains services distants (par exemple, Authorize.net pour le traitement des paiements).

parfois, nous avons besoin de plus de couches du type ci-dessus et de plus de machines, alors il est appelé N-tier

MVC est un modèle de conception de programmation dans lequel différentes parties de code sont responsables de la représentation du modèle, de la vue et du contrôleur dans certaines applications. Ces deux choses sont liées car, par exemple, la couche Model peut avoir une implémentation interne qui appelle une base de données pour stocker et récupérer des données. Le contrôleur peut résider sur le serveur Web et appeler à distance des serveurs d'applications pour récupérer des données. MVC résume les détails de la façon dont l'architecture d'une application est mise en œuvre. Model sur quel modèle nous voulions construire View signifie UI de l'application Contol Signifie la logique qui contrôle l'application

niveaux fait simplement référence à la structure physique d'une implémentation. Ces deux sont parfois confus car une conception MVC est souvent implémentée à l'aide d'une architecture à 3 niveaux.

6
ketan italiya

IMO il n'y a pas de comparaison directe entre l'architecture à 3 niveaux et MVC. Les deux sont utilisés en conjonction et nous avons donc tendance à les voir à travers la même lentille. Conceptuellement, ils ne doivent pas être utilisés ensemble. Je pourrais avoir une architecture à 3 niveaux qui n'utilise pas ce que MVC a à offrir.

Je n'élabore pas la partie définitions, mais en résumé:

3-Tier est une approche d'architecture logicielle, dans laquelle l'interface utilisateur, le processus métier sont logiques, le niveau de données est développé indépendamment, le plus souvent sur des plateformes distinctes.

[[# #]] mvc [~ # ~] a évolué d'un modèle logiciel à un modèle architectural sur une période de temps et est vu dans tous les principaux cadres de nos jours.

6
sanjeev

Mon expérience est que MVC est juste un autre terme "à la mode" pour un niveau 3 mal écrit, où une partie de la communication saute autour des couches métier, et donc la couche client et/ou données a également des règles métier mélangées.

Je déteste le code écrit comme ça - Le terme MVC doit avoir été conçu pour confondre les recruteurs RH en pensant que les programmeurs plus âgés (qui le connaissent comme "3 niveaux") ne sont pas adaptés à l'emploi.

3
user1230575

Dans MVC: l'architecture MVC est triangulaire: la vue envoie des mises à jour au contrôleur, le contrôleur met à jour le modèle et la vue est mise à jour directement à partir du modèle

Dans trois niveaux: une architecture à trois niveaux est le niveau client ne communique jamais directement avec le niveau de données Dans un modèle à trois niveaux, toutes les communications doivent passer par le niveau intermédiaire

Vikas Joshi Ingénieur logiciel

3
Vikas Joshi
  • 3 niveaux est une architecture linéaire. (Niveau présentation -> Niveau logique -> Niveau données puis Niveau données -> Niveau logique -> Niveau présentation) Mais MVC est une architecture triangulaire. (Contrôlez la vue de mise à jour et le modèle. Vue de mise à jour du modèle.)
  • MVC peut inclure dans le niveau de présentation (applications mobiles, Angular comme les frameworks js etc ...) et le niveau logique (J2EE, Laravel, etc ...) dans une architecture à 3 niveaux.
  • Les couches à 3 niveaux peuvent être implémentées dans différents nœuds de réseau. Mais généralement, les éléments de MVC sont implémentés dans les mêmes nœuds de réseau.
1
Dinuka Thilanga