领域驱动设计上下文映射图之集成限界上下文[以及与微服务技术栈结合方式]

限界上下文的集成包含:远程过程调用 消息机制 rest机制 等主流集成方式

 

 

 

限界上下文的集成主要包含主机开放服务 防腐层

开放主机服务:当一个限界上下文以URI形式提供了大量的rest资源 比如说在springcloud中为当前限界上下文提供的领域接口

防腐层: 不同于分层架构中的应用层 领域层 基础设施层 interface层 

防腐层针对的是不同上下文之间的交互:

获取上游上下文的对象服务接口CollaboratorService设置于领域层

其实现往往设计技术实现:比如feign等,所以我们将其实现设计于分层架构中的基础设施层[体现依赖倒置,面向抽象编程]

防腐层入参为上游的对象,出参为当前限界上下文的对象

 

 

 

 

防腐层接口

由文中的上下文映射图可知 防腐层广义上实际上是两个上下文交互的一系列代码实现的总称 包含领域服务接口,适配器,技术实现如feign ,翻译层等等 ,侠义上可以更加关注于翻译层

 

 

按微服务举列如下:

支付上下文需要获取订单上下文的订单信息进行支付

涉及两个微服务/限界上下文

订单上下文

支付上下文

com.order.domain.OrderInfo 订单领域核心对象

com.pay.domain.PayInfo 支付领域对象

OrderInfo 包含如下

@Data

public class OrderInfo{

private Long id;

private Double money;

...

}





com.order.interface.OrderInfoController.getOrderInfoById(Long id);

public class OrderInfoController{

@GetMapping("/id")

public OrderInfo getOrderInfoById(Long id){

...

    return new OrderInfo(id);

}

下游上下文需要访问订单信息进行支付[只关注怎么获取上游支付金额]

领域服务

com.pay.domain.model.PayInfo

com.pay.domain.service.OrderService【这是个领域服务而非应用服务】

基础设施服务

com.pay.infrastructure.service.OrderServiceImpl

com.pay.infrastructure.service.OrderToPayTranslator[翻译层]、

com.pay.infrastructure.feigns.OrderInfoFeign

应用层 PayInfoApplication

com.pay.application.PayInfoApplication

接下来我们假设用户发起支付业务

由接口层进入应用层 用户入参为订单id

public class PayInfoApplication {

@Autowird

pricate OrderService orderService;

    payOrder(Long id){

        // 支付上下文与订单上下文集成

        PayInfo payinfo = orderService.getOrder(id);

        payinfo.dobiz(); // 领域层执行相关业务

        // 最后交给持久化接口持久化

       com.pay.domain.repository.PayRes.save(payInfo);// 交给基础设施层实现存储,例如mybatis-plus,jedis等



    }

}

/**

PayInfo payinfo = orderService.getOrder(id);

OrderService在基础设施层的实现如下OrderServiceImpl

主要负责上下文交互的技术实现 以及上下文对象的转化也就是翻译层

*/

public classOrderServiceImpl{

    @Autowired private OrderInfoFeign feign

    PayInfo getOrder(Long id){

    OrderInfo orderInfo = feign.getOrderInfoById(id);

    PayInfo pay = OrderToPayTranslator.transfer(orderInfo); // 由于只是做对象的转化 所以个人倾向使用静态方法

    return pay;

    }

}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值