【问题标题】:ASP.NET MVC Architecture - Generic repository patternASP.NET MVC 体系结构 - 通用存储库模式
【发布时间】:2011-04-04 05:35:54
【问题描述】:

我是 ASP.NET MVC 的新手,我正在尝试找出其中的正确编码方式。
我正在尝试使用用于数据访问的通用存储库来实现多层架构。

这是我过去在 Webforms 解决方案中所做的(每个项目都是一个单独的项目):

  • MyProject.Data(实体框架 .Edmx + 通用存储库)
  • MyProject.Business.Services(调用存储库、应用业务规则等)
  • MyProject.Business.DomainModel(实体)
  • MyProject.UI(ASP.NET Webforms 应用程序)

现在采用 MVC 模式:
我想我应该在 MyProject.Business.DomainModel 中定义我的 ViewModel,在 MyProject.Business.Services 中定义我的模型。数据层保持不变。总结:

  • MyProject.Data(实体框架 .Edmx + 通用存储库)
  • MyProject.Business.Services(模型实施)
  • MyProject.Business.DomainModel(POCO 实体 + ViewModels)
  • MyProject.UI(ASP.NET MVC 应用)

我会感谢您的 cmets 关于这种方法的。

【问题讨论】:

    标签: architecture asp.net-mvc-3 separation-of-concerns neural-network


    【解决方案1】:

    查看洋葱架构。 http://jeffreypalermo.com/blog/the-onion-architecture-part-1/

    Codecampserver 是一个实现示例。 http://codecampserver.codeplex.com/

    SharpArchitecture 是另一个值得关注的例子。 http://code.google.com/p/sharp-architecture/

    他们做的事情并不完全相同,但他们做不同的关注点。

    【讨论】:

    • 谢谢德里克。非常翔实的东西。你对我的设计架构也有任何想法吗?
    • 我认为 UI 和服务可能还可以。我会将 ViewModels 放在 UI 项目中,因为它们是屏幕/视图的模型并且与 UI 有关。我会将 poco 和存储库接口放在 DomainModel 中,将 edmx 和存储库的实现放在 Data 中。
    • 如果我在 UI 中添加 ViewModel,我将无法从服务访问它们。我想我需要他们做一些业务逻辑。另外将存储库接口放入域模型有什么意义?我想我在任何地方都不需要它,除了 DAL。
    • 我认为您的模型实现不属于服务层,我会将它们放在 DomainModel 层中,并将服务层留给呃......好吧..服务:)
    • 用洋葱拱门。所有的接口和领域模型都在核心中。因此,任何服务和存储库接口都进入核心。域模型是核心。然后实现进入其他程序集。然后,UI 只引用核心而不是实现。
    猜你喜欢
    • 2016-02-12
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-01-05
    • 2011-06-28
    • 2013-10-25
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多