游客vvhuafakamuxq_个人页

个人头像照片 游客vvhuafakamuxq
个人头像照片
0
419
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息

2022年05月

正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2022-05-11

    “指令驱动”和“事件驱动”的区别是什么?

    “指令驱动”和“事件驱动”的区别不是“同步”和“异步”。指令可以是同步调用,也可以是异步消息触发(但异步指令不是事件);反过来事件可以是异步消息,但也完全可以是进程内的同步调用。所以指令驱动和事件驱动差异的本质不在于调用方式,而是一件事情是否“已经”发生。

    踩0 评论0
  • 回答了问题 2022-05-11

    从业务职责来看,Orchestration和Choreography的差异体现在哪?

    Orchestration:有主动的调用方(比如:下单服务)。无论下游的依赖是谁,主动的调用方都需要为整个业务流程和结果负责。 Choreography:没有主动调用方,每个服务只关心自己的触发条件和结果,没有任何一个服务会为整个业务链路负责。

    踩0 评论0
  • 回答了问题 2022-05-11

    从调用链路来看,Orchestration和Choreography的差异体现在哪?

    Orchestration:是从一个服务主动调用另一个服务,所以是Command-Driven指令驱动的。 Choreography:是每个服务被动的被外部事件触发,所以是Event-Driven事件驱动的。

    踩0 评论0
  • 回答了问题 2022-05-11

    从代码灵活性来看,Orchestration和Choreography的差异体现在哪?

    Orchestration:因为服务间的依赖关系是写死的,增加新的业务流程必然需要修改代码。 Choreography:因为服务间没有直接调用关系,可以增加或替换服务,而不需要改上游代码。

    踩0 评论0
  • 回答了问题 2022-05-11

    从代码依赖关系来看,Orchestration和Choreography的差异体现在哪?

    Orchestration:涉及到一个服务调用到另外的服务,对于调用方来说,是强依赖的服务提供方。 Choreography:每一个服务只是做好自己的事,然后通过事件触发其他的服务,服务之间没有直接调用上的依赖。但要注意的是下游还是会依赖上游的代码(比如事件类),所以可以认为是下游对上游有依赖。

    踩0 评论0
  • 回答了问题 2022-05-11

    Choreography的模式是什么?

    常会出现在脑海的场景是一个舞剧(来自于希腊文的舞蹈,Choros)。其中每个不同的舞蹈家都在做自己的事,但是没有一个中心化的指挥。通过协作配合,每个人做好自己的事,整个舞蹈可以展现出一个完整的、和谐的画面。所以在Choreography模式中,每个服务都是独立的个体,可能会响应外部的一些事件,但整个系统是一个整体。

    踩0 评论0
  • 回答了问题 2022-05-11

    Orchestration的模式是什么?

    通常出现在脑海里的是一个交响乐团(Orchestra,注意这两个词的相似性)。交响乐团的核心是一个唯一的指挥家Conductor,在一个交响乐中,所有的音乐家必须听从Conductor的指挥做操作,不可以独自发挥。所以在Orchestration模式中,所有的流程都是由一个节点或服务触发的。我们常见的业务流程代码,包括调用外部服务,就是Orchestration,由我们的服务统一触发。

    踩0 评论0
  • 回答了问题 2022-05-11

    Repository特殊在哪里?

    Repository可以认为是一种特殊的ACL,屏蔽了具体数据操作的细节,即使底层数据库结构变更,数据库类型变更,或者加入其他的持久化方式,Repository的接口保持稳定,ApplicationService就能保持不变。

    踩0 评论0
  • 回答了问题 2022-05-11

    ACL防腐层的原理是什么?

    对于依赖的外部对象,我们抽取出所需要的字段,生成一个内部所需的VO或DTO类。 构建一个新的Facade,在Facade中封装调用链路,将外部类转化为内部类。 针对外部系统调用,同样的用Facade方法封装外部调用链路。

    踩0 评论0
  • 回答了问题 2022-05-11

    为什么可以通过DTO组合降低成本?

    Entity是有限的,DTO可以是多个Entity、VO的自由组合,一次性封装成复杂DTO,或者有选择的抽取部分参数封装成DTO可以降低对外的成本。

    踩0 评论0
  • 回答了问题 2022-05-11

    为什么ApplicationService应该永远返回DTO而不是Entity?

    因为我们操作的对象是Entity,但是输出的对象是DTO,这里就需要一个专属类型的对象叫DTO Assembler。DTO Assembler的唯一职责是将一个或多个Entity/VO,转化为DTO。注意:DTO Assembler通常不建议有反操作,也就是不会从DTO到Entity,因为通常一个DTO转化为Entity时是无法保证Entity的准确性的。

    踩0 评论0
  • 回答了问题 2022-05-11

    常用的ApplicationService“套路”有哪些?

    准备数据:包括从外部服务或持久化源取出相对应的Entity、VO以及外部服务返回的DTO。 执行操作:包括新对象的创建、赋值,以及调用领域对象的方法对其进行操作。需要注意的是这个时候通常都是纯内存操作,非持久化。 持久化:将操作结果持久化,或操作外部系统产生相应的影响,包括发消息等异步操作。

    踩0 评论0
  • 回答了问题 2022-05-11

    如何判断一段代码到底是业务流程还是逻辑呢?

    (1)不要有if/else分支逻辑 (2)不要有任何计算 (3)一些数据的转化可以交给其他对象来做

    踩0 评论0
  • 回答了问题 2022-05-11

    3种ApplicationService的组织形态是什么?

    (1)一个ApplicationService类是一个完整的业务流程,其中每个方法负责处理一个Use Case。 (2)针对于比较复杂的业务流程,可以通过增加独立的CommandHandler、EventHandler来降低一个类中的代码量 (3)比较激进一点,通过CommandBus、EventBus,直接将指令或事件抛给对应的Handler,EventBus比较常见。

    踩0 评论0
  • 回答了问题 2022-05-11

    CQE 与 DTO的区别是什么?

    CQE:CQE对象是ApplicationService的输入,是有明确的”意图“的,所以这个对象必须保证其”正确性“。 DTO:DTO对象只是数据容器,只是为了和外部交互,所以本身不包含任何逻辑,只是贫血对象。

    踩0 评论0
  • 回答了问题 2022-05-11

    上一个问题中所提到的规范的好处是什么?

    提升了接口的稳定性、降低低级的重复,并且让接口入参更加语意化。

    踩0 评论0
  • 回答了问题 2022-05-11

    在Application层的接口里,强力建议的一个规范是什么?

    ApplicationService的接口入参只能是一个Command、Query或Event对象,CQE对象需要能代表当前方法的语意。唯一可以的例外是根据单一ID查询的情况,可以省略掉一个Query对象的创建。

    踩0 评论0
  • 回答了问题 2022-05-11

    传统的接口写法有什么问题?

    接口膨胀:一个查询条件一个方法。 难以扩展:每新增一个参数都有可能需要调用方升级。 难以测试:接口一多,职责随之变得繁杂,业务场景各异,测试用例难以维护。

    踩0 评论0
  • 回答了问题 2022-05-11

    Event事件的定义是什么?

    指一件已经发生过的既有事实,需要系统根据这个事实作出改变或者响应的,通常事件处理都会有一定的写操作。事件处理器不会有返回值。这里需要注意一下的是,Application层的Event概念和Domain层的DomainEvent是类似的概念,但不一定是同一回事,这里的Event更多是外部一种通知机制而已。

    踩0 评论0
  • 回答了问题 2022-05-11

    Query查询指的是什么?

    指调用方明确想查询的东西,包括查询参数、过滤、分页等条件,其预期是对一个系统的数据完全不影响的,也就是只读操作。

    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息