软件设计:数据模型的使用和服务之间的依赖关系

时间:2019-01-20 01:04:36

标签: architecture

我想听听有关软件设计的一些意见:

  1. 数据模型

我目前正在基于以下软件开发软件

Controller
    Service
        Repository

我不确定每个层使用不同的数据模型是否是一个好习惯。

Controller -> Receives a DTO and converts it into a "service object"
    Service -> Receives a "service object" and converts it into a database entity
        Repository -> persists a database entity

似乎有很多重复的代码,因为通常每一层中的信息交换不会有太大差别。

  1. 服务之间的依赖关系

假设您有两项服务     可用性:检查可用日期     预订:进行预订

现在,如果在致电可用性服务时可以使用该日期,则必须预订该日期。应该如何管理这种依赖性?

- Option 1: calling BookingService from inside AvailabilityService
    AvailabilityService {

        Calling BookingService

    }

- Option 2: calling BookingService after the response of AvailabilityService
    AvailabilityController {
        Calling AvailabilityService
        Calling BookingService (base on the response from AvailabilityService)
    }

1 个答案:

答案 0 :(得分:1)

问题1: 该模型取决于谁在“处理”数据。具有O / R映射器的持久层具有某种建模对象的方式(或更准确地说,是类)。另一方面:浏览器中的视图(不是数据库中的视图)通常会混合来自不同objets的数据,因此,您将为该视图创建自定义的DTO,其中包含该视图需要显示的内容。这还包括不公开视图不需要的数据,并避免多个请求(首先是该对象,然后是...)。如果需要进一步转换,则必须确定某人是否需要其他数据结构。我认为这不是通常的用例,通常您必须将数据库中的数据结构映射到视图所需的数据。

问题2: 如果您的AvailabilityService仅检查可用性,则不应预订。否则名称将为假。在选项2中,控制器的名称有误,这显然不是AvailabilityController,而是类似于OrderController的东西,请注意选择好名字(干净的代码)。