Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Domain driven design 开放主机服务与应用层_Domain Driven Design - Fatal编程技术网

Domain driven design 开放主机服务与应用层

Domain driven design 开放主机服务与应用层,domain-driven-design,Domain Driven Design,OHS。。。打开主机服务 AL。。。应用层 ACL。。。反腐败层 卑诗省。。。有界上下文 1. 这里我将使用术语单向当我们的OHS的公共接口只能由外部BCs调用我们的系统时,但不能由我们的BCs调用外部系统 类似地,当外部BCs可以使用OHS的公共接口调用我们的系统时,我将使用术语双向,但我们的BCs也可以使用它调用外部系统 a) 是单向的还是双向的?我想说它只能是单向的 b) 类似地,AL是单向的还是双向的?我想说它只能是单向的 2.我假设OHS不会取代AL,而是位于应用程序服务/AL之上 3

OHS。。。打开主机服务
AL。。。应用层
ACL。。。反腐败层
卑诗省。。。有界上下文

1.

这里我将使用术语单向我们的OHS的公共接口只能由外部BCs调用我们的系统时,但不能由我们的BCs调用外部系统

类似地,当外部BCs可以使用OHS的公共接口调用我们的系统时,我将使用术语双向,但我们的BCs也可以使用它调用外部系统

a) 是单向的还是双向的?我想说它只能是单向的

b) 类似地,AL是单向的还是双向的?我想说它只能是单向的

2.我假设OHS不会取代AL,而是位于应用程序服务/AL之上

3.

a) OHS是否也应用于属于同一应用程序一部分的BCs之间的通信,还是仅用于与外部BCs之间的通信?不管答案是什么,请详细说明你的理由

b) 假设相互通信的BC是同一应用程序的一部分,并且假设我们不使用OHS—这些BC应该直接相互通信(即BC调用ACL,ACL反过来又直接调用BC)还是通过AL(即BC将调用ACL,ACL将调用AL,后者将直接调用BC)

我认为这些BC应该直接通信,而不是通过AL,因为它可能会膨胀AL的接口,也可能会将内部功能暴露给外部系统

4.

埃里克·埃文的DDD书,第375页:

开放主机服务为多方使用标准化协议 集成。它使用域的模型在 系统,即使这些系统可能不在内部使用该模型 系统

a) 我假设我们的OHS应该使用我们的应用程序的域模型作为其自身模型的基础?换句话说,OHS不应该使用应用程序的域模型,而应该仅仅基于它自己的模型

b) 由于我们的OHS有自己的模型(通常基于核心域,不管是什么),我认为我们还应该定义一个位于OHS和应用程序其余部分之间的转换/反腐败层

c) 应用程序服务的参数和返回值是否根据应用程序的域模型定义

5.

BC是否总是使用基础设施服务调用另一个BC(当然,如果BC使用的是ACL,则BC将调用ACL,后者将调用基础设施层,后者将调用另一个BC),而不管该另一个BC是外部的还是同一应用程序的一部分

谢谢

EULERFX:

1.

1b)ACL是双向的,因为数据在任一方向流动- 当您向外部服务发送消息时,或者 解释从所述服务接收的消息

a) “或解释从所述服务收到的消息”您的意思是,只有我们的ACL可以从被叫外部BC收到回复(即返回值),还是您的意思是发送消息的同一ACL(代表我们的BC)也可以在外部BCs呼叫我们的BCs时解释消息

b) 如果前者,那么从这个意义上说OHS不也是双向的,因为外部系统调用的OHS服务也可以向这些外部系统发送回复(即返回值)?如果后者,在4b)中您所说的OHS本身也充当翻译,这表明当外部系统调用我们的BC时,我们的BC用于调用外部系统的ACL也不会被使用,这意味着ACL不能是双向的

3.

3b)假设相互通信的BCs是同一系统的一部分 应用程序和假设我们不使用OHS-这些BCs 直接相互通信(即BC将调用ACL,在 turn将直接呼叫BC)或通过AL(即BC将呼叫 ACL,它将调用AL,然后它将直接调用BC)

如果不使用OHS,请致电其他BC的应用服务

a) 你是说BC应该调用ACL,它会调用AL,然后直接调用另一个BC

b) 同一应用程序中的BC是否共享相同的AL

c) 如果内部BC共享相同的AL,这是否意味着我们可能会被迫定义一些应用程序服务,其唯一目的是使内部BC能够相互通信(因此外部客户端不需要调用这些特定的应用程序服务)。因此,这些应用程序服务不向外部客户端公开内部功能吗

澄清:我知道外部客户端只有在引用了包含我们的应用程序服务的dll时才可以直接调用我们的应用程序服务,但如果某些客户端确实引用了此类dll,则有可能