2011-02-18 72 views
2

好吧,所以我一直在采取各种有关MVC,EF4,存储库模式,UoW,服务层等的伟大信息,现在我将尝试将它们放在一起。ASP.NET MVC应用程序设计

我的问题是,这些应该如何分开?

我想的项目是这样的:

1)应用 - MVC应用程序
2)库层 3)实体 - EF4 /部分实体类

任何建议将是伟大的!

感谢, 山姆

+1

对于那些刚接触MVC模式并希望获得更多正确架构知识的人来说,这是一个很好的问题。我期待着答案 – stephen776 2011-02-18 18:03:30

回答

5

这里是你怎么可以构建应用程序一个例子:

  1. 领域模型(初级POCO对象)
  2. 库(根据一些数据访问技术的实现项目需求:EF,NHibernate,LINQ to XML,远程Web服务调用,...)
  3. 服务(业务操作将多个CRUD操作聚合到业务操作中,升与域对象和视图模型)

这层可以表示物理分离之间的域对象)

  • ASP.NET MVC应用程序(控制器,视图,视图模型,映射器被暴露(组件)或逻辑分离到相同的程序集中。

  • +0

    你会碰到一个我可以看的样品吗?我对1和2有点困惑。你能详细说明一下吗?此外,服务层是否与EF生成的对象一起工作?域对象是EF生成的对象吗? - 谢谢!! – Sam 2011-02-18 17:55:24

    +3

    @Sam Striano,这是我写的一个示例MVC项目结构(没有服务层=>控制器调用存储库):https://github.com/darind/samplemvc。让我试着详细说明:服务层不适用于EF生成的对象。它与您在1中定义的领域模型一起工作.EF对象被EF特定的东西污染(除非您使用Code First,在这种情况下,您的EF Code First模型成为第1点)。该模型不应该与您正在使用的任何数据访问技术相关。对我来说,自动生成的EF类不应该离开它们各自层的边界。 – 2011-02-18 18:01:45

    3

    不要在物理上分开代码,除非有物理原因,例如部署或代码共享的原因。使用文件夹和名称空间。

    3

    我刚刚通过这个自己,迄今为止我发现的最好的方法是S#arp Architecture

    优秀的模板为您生成项目脚手架,他们有一个很好的解释为什么你真的想要物理项目分离。 Good argument here。这些教程展示了如何使用此模型进行TDD轻而易举。

    这个模型的优点是它提供的关注点分离,所以如果你确实想使用EF,那么它就是一个切换NHibernate的剪辑。