Entity Framework et architecture
Bonjour,
Je m'intéresse depuis peu au Entity Framework, dans une architecture MVC, Ntier si possible.
Je ne sais pas trop comment architecturer mon application globalement... donc j'aimerai un retour d'expérience.
Globalement, j'ai déjà 2 projets :
MonApp.Web (application web)
MonApp.Common (objet commun à toute l'application)
MonApp.Model (là sont mes objets métiers qui vont transiter entre les couches)
Ensuite, evidemment :
MonApp.SQLData (qui comprendra mon EDM)
Là, j'aimerai pouvoir ajouter une couche service et les interfaces qui vont avec.
Je me demande si mon MonApp.Model ne sera pas trop en redondance avec les EntityObject généré par l'EDM....
Qu'en pensez vous ?
Crée un répertoire à part (ou une DLL)
Salut,
Tu peux créer un répertoire Objects dans lequel tu rangeras tes couches
Objects
DataLayer
BusinessLayer
CommonLayer
ServiceLayer
PresentationLayer
... PuristeLayer genre : ErrorLayer (qui peut être dans CommonLayer)
... AmoureuxDesCouchesLayer : N'en rajoute pas trop quand même
Bien sûr, si tu utilises Entity Framework, la couche Domain disparait puisqu'elle est encapsulée dans ton modèle.
Si tu travailles avec TeamSystem sur un gros projet à beaucoup de développeurs, mets tes couches dans des DLL séparées et mets un gars sur chacune d'elles et échange les couches entre les gars à chaque itération (pour éviter que la routine s'installe).
Le développement en couches n'a rien à voir avec la technologie d'affichage des pages (qu'elles soient web ou winform).
++
Laurent
Entity Framework est (à mon sens) une DAL Parfaite mais..
Salut,
EF est une très bonne DataLayer toutefois, dans mes projets, j'encapsule tous les appels à EF dans une couche que j'appelle DataLayer qui est invoquée exclusivement par ma BusinessLayer et qui ne renvoie que des propriétés scalaires ou des objets de ma BuisinessLayer.Facades (qui sont tous sérializable au passage pour bien gérer la persistence temporaire dans le ViewState).
Je ne te conseille pas de l'appuyer directement sur les entités pour alimenter ta couche de présentation car elles présentent beaucoup de limitations par rapport aux objets (par exemple tu ne peux pas faire deux foreach sur la même collection résultante d'une requête EF).
J'ai connu des architectes qui ajoutaient encore plus de couche, c'est vrai que lorsque ça marche c'est génial mais je trouve ça un peu lourd.
A toi de voir donc
++
Laurent