2017-10-20 8 views
0

J'ai commencé par me demander où placer le calque métier dans un modèle MVC. Cela m'a rapidement amené à me demander "quelle est la différence entre n-tier et MVC". J'ai lu beaucoup d'articles et de réponses Stackoverflow et j'ai trouvé qu'il y avait autant d'opinions différentes que de réponses.Architecture MVC et N-Tier

Je ne suis pas un expert mais je pensais que certaines des réponses et des articles n'étaient que des ordures. par exemple. N-tier est lorsque chaque niveau est sur le matériel physiquement différent dans le réseau (nah!) N-tier pour les grandes applications et MVC est pour les petits (ordures)

Puis je lis un qui avait un sens. Le processus N-tiers transfère toujours l'interface utilisateur vers BL vers DL et vice-versa via BL vers l'interface utilisateur. Cependant, MVC a ce flux de processus triangulaire. C'est vrai, mais est-ce tout?

Un autre point soulevé par quelqu'un était que MVC était un modèle d'architecture d'application et que n-tier était un mode Architecture système. Je n'étais pas sûr de ce qu'ils voulaient dire par là jusqu'à ce qu'ils aient mentionné que le modèle MVC étant une architecture d'application pourrait être utilisé dans chacune des couches à n niveaux. Après avoir lu sur Angular, j'ai pu voir MVC implémenté dans la couche UI et voir comment MVC et Web API ont récemment fusionné .Net Je pouvais voir une couche intermédiaire Web AP avec des contrôleurs, des vues et des modèles.

Mais cela résisterait-il à la DL? La plupart des couches de données dans .Net ces jours-ci sont le travail EntityFrame avec un emballage. Le niveau DL peut-il être implémenté avec un modèle MVC ou, en fait, devrait-il l'être?

Si cette définition de N-tier et MVC est correcte, il devrait être possible d'appliquer le modèle MVC à n'importe quelle couche dans une couche système N-tier.

Quelqu'un peut-il me donner une indication si cela est faisable ou si vous devriez même être dérangé avec le DAL étant MVC.

Répondre

0

D'une certaine manière, oui. Il est possible d'implémenter quelque chose qui s'apparente à MVC dans la couche de données. En particulier, les vues, les modèles et le contrôle (pas nécessairement un controllerER). Prenez, par exemple, SQL Server.

Vous pouvez créer une architecture de transmission de message qui vous permet de créer une API pour accéder aux données de sorte que même si le modèle sous-jacent (tables) change, l'API ne le fait pas. Rappelez-vous cependant que la "couche de données" a tendance à faire référence au code, plutôt qu'au niveau physique. Votre couche d'accès aux données est généralement une API, un modèle ou un référentiel qui encapsule les données et les transforme en un ensemble de données compatible avec la couche application.