2010-08-12 5 views
1

Je sais que des questions similaires ont déjà été posées auparavant, mais j'ai des exigences spécifiques qui font que je n'ai pas répondu à ces questions. Le projet veut avoir une architecture typique à trois niveaux, mais il souhaite que la couche de données soit analysée par Entity Framework, que la couche de présentation soit MVC 2 et que la couche d'application soit une simple bibliothèque de classes.MVC Architecture

Ces composants (EF et MVC) s'intègrent-ils dans cette architecture.

Note: le projet suivrait une méthodologie TDD.

Toute aide est appréciée.

Répondre

3

Absolument. Toutes les bonnes démonstrations/articles sur les applications Web ASP.NET MVC suivent cette architecture.

Généralement votre solution ressemblerait à ceci:

YourProject.Model (Bibliothèque de classes avec de POCO - objets de domaine)

YourProject.Repository (Bibliothèque de classes avec Entity Framework).

YourProject.Services (Bibliothèque de classes agit comme médiateur entre référentiel et contrôleurs)

YourProject.MVC (MVC2 application Web)

YourProject.Tests (Unité de test du projet - généralement 1 projet par niveau)

Pour répondre à vos questions , le référentiel extrait les données des autres modules, la couche de présentation est MVC2 et la couche d'application peut être intégrée dans le module Services, ou disposer d'un autre module. Bien sûr, MVC s'intègre parfaitement avec TDD, vous pouvez vous moquer de vos contrôleurs et tester la bibliothèque de classes comme vous le feriez pour tester n'importe quelle bibliothèque de classes. Jetez un œil à la série MVC Storefront de Rob Conery sur www.asp.net - la meilleure série vidéo jamais vue.

Bonne chance!

+0

Donc mes modèles seraient dans 'YourProject.Model', donc le dossier Models dans l'application MVC pourrait être vide/enlevé et je ferais ma ModelBinding aux POCO's? Enfin les attributs DataAnnotation seraient aussi sur mon POCO? – user295368

+2

J'aime conserver le dossier Models dans le MVC add juste pour ViewModels (objets de domaine combinés pour simplifier les vues). Vous pouvez utiliser DataAnnotations sur votre POCO, le seul problème est que vous devez faire référence à l'assembly System.Web.Mvc - certaines personnes n'aiment pas cela, mais personnellement, je ne vois pas de problème avec cela. Tout simplement parce que vous ajoutez une référence à un assemblage généralement utilisé sur le niveau Web, cela ne signifie pas nécessairement que vous allez à l'encontre de tout principe architectural. – RPM1984

-1

Vous devriez regarder l'exemple de ContactManager avec le tutoriel de huit sections sur le site ASP.NET MVC, il est implémenté avec une classe de référentiel afin que la couche de données soit abstraite.