Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.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
Asp.net core 微服务web api应用程序域驱动设计:有大量重复数据正常吗?_Asp.net Core_Microservices_Asp.net Core Webapi - Fatal编程技术网

Asp.net core 微服务web api应用程序域驱动设计:有大量重复数据正常吗?

Asp.net core 微服务web api应用程序域驱动设计:有大量重复数据正常吗?,asp.net-core,microservices,asp.net-core-webapi,Asp.net Core,Microservices,Asp.net Core Webapi,所以我正试图掌握微服务。据我所知,每一项服务都应该是独立的。 在我的示例中,我有一个Unit.API和一个batch.API。Unit.API db包含大约1000000个不同的单元 现在,如果我想在Combat.API中计算/创建combatLog,我需要知道哪些用户使用了哪些单位 方法0:据我所知是错误的方法: 在控制器的post方法中,我获取所有UnitID作为参数,然后调用Unit.API,以获取单位 方法1:正确的方法?: 我在我的batch.API中有一个unit.API中每个单位的

所以我正试图掌握微服务。据我所知,每一项服务都应该是独立的。 在我的示例中,我有一个
Unit.API
和一个
batch.API
Unit.API db
包含大约1000000个不同的单元

现在,如果我想在
Combat.API
中计算/创建combatLog,我需要知道哪些用户使用了哪些单位

方法0:据我所知是错误的方法:
在控制器的post方法中,我获取所有UnitID作为参数,然后调用
Unit.API
,以获取单位

方法1:正确的方法?:
我在我的
batch.API
中有一个
unit.API
中每个单位的副本。在控制器的post方法中,我获取所有单元作为参数,并从
batch.API db
获取作战单元的“副本”。每当一个单位发生变化时,我必须将一个事件从
unit.API
发送到
batch.API
,在那里进行同样的变化

方法2:也错了吗?:
在控制器的post方法中,我通过参数直接获得所有单元


我认为方法1实际上是正确的,但对我来说它感觉是错误的。每分钟可能会有数千个单位的变化,我必须发送数千个事件来保持另一个数据库的更新。这里什么是正确的?

方法0:这似乎是最轻量级的解决方案,但在这里您将面临某种“基础架构耦合”。这是什么意思?这意味着,当Unit.Api出现故障或崩溃时,Combat.Api也将无法工作,因为它依赖于单位服务

方法1:这是一种“按部就班”的解决方案。您可以复制数据,但正因为如此,您才有了独立的服务

方法2:对我来说似乎是一种解决方法:)

首先,如果您要进入微服务体系结构,您应该以拥有独立服务为目标。但在某些情况下,它们之间丰富的通信也可能成为瓶颈,难以维护

到目前为止,我遇到了不同的方法,与你提到的完全相同。在你选择最好的一个之前,你应该考虑风险和复杂性,更取决于你同意哪一个选择,并意识到缺点


此外,我认为你应该再次看看你的架构。。。我不知道Unit.API的用途和用途是什么,但如果它只被Combat.API使用,也许它应该是一个microservice/boundedcontext?

谢谢。Unit.API还用于培训/购买/销售单元。所以这里有很多独立的功能。