【问题标题】:Layered architecture practice分层架构实践
【发布时间】:2016-01-25 14:30:55
【问题描述】:

我正在构建一个分层的 WebAPI。我有

  • 数据访问层
  • 业务逻辑层
  • 模型(用于数据库模型)
  • 表示层 (MVC)

数据库如下所示:

Courses
    - CourseID

Users
    - UserID
    - FirstName
    - LastName

Attendants
    - CourseID *
    - UserID *

Dates
    - CourseID *
    - Date

我已经制作了模型(模型层),它们是数据库上的 1:1 字段。

现在我想创建一个模型(业务模型?),它具有:

class Course
    List<User> Attendants { get; set; }
    List<DateTime> Dates { get; set; }

目标是将此模型作为 JSON 返回。

这个模型属于哪一层?

【问题讨论】:

    标签: asp.net entity-framework


    【解决方案1】:

    目标是将此模型返回为 JSON

    如果这是唯一的目标,那么它就不是业务模型,而是视图模型。因此,它属于表示层。

    业务模型用于定义和构建领域逻辑,独立于所使用的任何特定技术。视图模型用于将数据绑定到特定技术以进行展示。

    最终,问题是... 特定组件应耦合到系统的哪个部分?系统的哪些其他部分需要依赖它?在这种情况下,它与表示技术耦合,只有表示层会依赖它。

    【讨论】:

      【解决方案2】:

      我会这样改写你的图层:

      • (DSL) 数据存储层 - 您的 SQL 数据库
      • (DAL) 数据访问层 - 实体框架
      • (BOL) 业务对象层 - 您的实体(MVC 中的模型)
      • (PL) 表示层 - 您的控制器逻辑与 viewModels(控制器 ins MVC)
      • (VL) 视图层 - 您的 MVC 视图。 (在 MVC 中查看)

      由于您的课程将在控制级别组装到视图模型中,该视图模型将传递给视图,我建议将其放入 表示层

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2010-12-25
        • 2011-11-22
        • 2014-06-12
        • 1970-01-01
        • 2011-03-16
        • 2017-01-03
        • 2015-03-15
        相关资源
        最近更新 更多