分层建筑实践

时间:2016-01-25 14:30:56

标签: asp.net entity-framework

我正在构建一个分层的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返回。

这个模型属于哪个层?

2 个答案:

答案 0 :(得分:1)

  

目标是将此模型作为JSON

返回

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

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

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

答案 1 :(得分:0)

我会这样重写你的图层:

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

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