在MVC应用程序的体系结构中,最好是添加服务层还是创建数据库视图?

时间:2012-03-02 11:20:05

标签: database model-view-controller service-layer

假设您有一个数据库,用于存储有关票务系统的信息(如帮助台)。 (简化)架构是:

  1. 票证(TicketId(PK),TicketDesc,TicketCreated,TicketClosed, 的 AssignedToEmployee(FK)

  2. 员工 EmployeeId(PK),EmployeeName,EmployeeFunction)

  3. AssignedToEmployee = EmployeeId 上Ticket和Employee之间存在多个关系。

    您必须开发一个 MVC 应用程序(由 EF 实体+ 存储库类组成的 DAL )有关故障单的图表和统计信息,例如在特定时间段内分配给用户的故障单数。为了计算统计数据并将图形值提供给View,您需要执行一些逻辑。 此逻辑可以放在控制器存储库中。由于控制器必须尽可能保持苗条,并且存储库中的实现逻辑将增加与数据库的耦合,在这种情况下最好的是什么? 创建服务层或创建数据库视图?在后一种情况下,创建的视图将被视为我的EF中的实体?

2 个答案:

答案 0 :(得分:2)

我要创建一个服务层。在我看来,控制器实际上是View的一部分。存储库不应该进行计算。您需要中间的服务。这种安排有许多优点:

  1. 服务可以被SOA中的其他应用程序重用。
  2. 可以使用任意数量的远程处理技术(SOAP,REST,XML-RPC等)公开服务。
  3. 服务是工作单位的自然所有者;他们应该管理连接和交易。

答案 1 :(得分:1)

我会创建一个服务层,而不是添加数据库视图。

存储库仅处理数据访问,服务层具有业务逻辑,控制器非常纤薄,只是将给出的信息映射到模型。

服务层不一定是指WCF服务或ASMX服务,它可以是您引用的业务层。