具有第三集成的三层体系结构

时间:2019-05-09 23:19:11

标签: c# asp.net .net .net-core

我有一个N层体系结构,现在我需要添加与仓库系统的集成。 我创建了集成,现在可以像这样使用它了:

var provider = IntegrationFactory.GetDataProvider("integration name");
var integrationOrders = await provider.Orders.GetAllAsync();

有什么问题-我有一个服务层,通常可以与我的DAL一起使用,例如CRUD操作和填充DTO模型。 我必须创建一种方法来与集成订单同步我的订单-让我们将这种方法称为“ SyncIntegrationOrders”,从集成端获取所有订单,并将其与数据库中的订单同步,所以我并不是真的了解是否可以在我用于DAL的OrderService中保留此方法? 否则会破坏SRP原则... 但是无论如何,当我想要SyncIntegrationOrders时,我也需要DAL层。 预先感谢。

1 个答案:

答案 0 :(得分:0)

我不会混合同步和订购服务,因为:

1)同步服务添加了一些与订购服务无关的依赖项,例如IntegrationFactory,外部数据源等

2)同步服务可以具有与订单服务无关的特定功能:例如故障恢复,远程端的数据一致性,合并订单,解决合并冲突等

3)它简化了单元测试

4)它易于将应用分解,例如分解为微服务

一些评论:

  • 同步服务需要尽快与订单服务而非DAL进行通信/相互依赖,否则它可以复制订单服务中定义的某些业务逻辑

  • 订购服务需要尽快不接受/返回DTO,它会操纵业务实体(DTO的引入较高-在Facade或“演示文稿”中(例如Controller,ApiController ..))

  • 解耦:订购服务应仅将某些事件(例如“订购创建”等)通知系统,而不是单独调用同步服务。同步服务订阅必需的事件并根据其逻辑进行处理(例如,进行批处理)。