gpt4 book ai didi

architecture - 在哪里保留公共(public)服务?

转载 作者:行者123 更新时间:2023-12-04 05:06:59 27 4
gpt4 key购买 nike

在域驱动方法中 - 在哪里保留公共(public)服务?

例如,有时我们可能需要一些通用函数,如 getcountrylist、getstatelist、getcitylist(或来自 MASTER 表的其他一些数据),以在 UI 的不同页面/模块中显示下拉列表。假设这些数据是否存在于数据库中,那么我们需要在哪里拥有这些功能。

  1. 我可以将这些函数保留在 Domain/Common/CommonServices.php 中吗(我的意思是在域层中很好?)(或)

    我可以将这些功能保留在 Infra/Common/CommonServices.php 中吗(在这种情况下,我需要直接从 Infraservice 层连接到 dao 层,我认为这是不正确的?)

  2. 包含这些常用功能的文件的正确名称/建议名称是什么。 (CommonServices.php(或)CommonHelper.php(或)CommonUtils.php(或)MetadataService.php(或)您的任何建议)

最佳答案

如果您确实需要不同限界上下文中的相同数据并使用相同的存储库检索它们,那么在 DDD 中有一种叫做共享内核的东西。 SHARED KERNEL 是一个地方,当你把重叠的东西放在几个有界的上下文中时,引用 DDD Quick:

The purpose of the Shared Kernel is to reduce duplication, but still keep two separate
contexts. Development on a Shared Kernel needs a lot of care. Both teams may modify
the kernelcode, and they have to integrate the changes.
If the teams useseparate copies of the kernel code, they have to merge the codeas soon
as possible, at least weekly. A test suite should be inplace, so every change done to
the kernel to be tested right away. Any change of the kernel should be communicated
to another team, and the teams should be informed, making them aware of the new
functionality.

无论如何,如果您的 SHARED KERNEL 变得太大,那么您的建模可能会出现问题。尽量保持共享内核尽可能小。

关于architecture - 在哪里保留公共(public)服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25827853/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com