【问题标题】:Best architectural pattern to avoid module dependencies on Feature layer避免模​​块依赖功能层的最佳架构模式
【发布时间】:2019-05-28 02:11:16
【问题描述】:

我想获得一些关于架构模式的建议,以避免模块依赖于功能层。

每个站点都有某种内容页面,例如文章或新闻。这些可以作为专题/文章模块或专题/新闻模块进行管理。两者都有共同的字段,如标题、摘要和图像。

现在我创建了一个 Feature/FeaturedContent 模块。其中我有一个带有自己模板的滑块。但内容作者想从文章或新闻部分选择和挑选项目 仅使用标题、摘要和图像。

连接来自不同模块的项目很容易,但是当我使用 @Html.Sitecore().Field(Templates... 渲染它时,我将没有这些字段(标题、摘要和图像,因为这些字段的 ID 不同)在每个模块中)在我的 Feature/FeatureContent 模板上。而且我不能不引用 Feature 层下的其他模块。而且我不能不添加这些字段,因为这些字段不属于 FeatureContent 模块。这是因为 Helix 是Feature层下的模块之间不允许有依赖关系。

我想就如何解决这个问题获得一些建议。 我当然希望允许内容作者重用来自不同功能模块的内容。我认为我必须将公共领域移入基础。 任何建议都将受到高度赞赏。谢谢

【问题讨论】:

    标签: sitecore sitecore-mvc helix


    【解决方案1】:

    首先,不鼓励,但并非不可能在 Feature 层中存在一些相互依赖。显然这会影响模块耦合,因此应尽可能避免。

    在您的特定情况下,我认为该方法应该是使用“接口标记模板”创建一个通用基础功能,其中包含您需要的 3 个通用字段以及支持的 Glass 基类(或其他此类 ORM 代码)。然后,此模块将成为文章和新闻功能的依赖项。

    虽然这在技术上仍然是一个耦合问题,但它仍然非常符合我们的 SOLID 原则,并且在某种意义上它仍然是自上而下的。将其标记为 Foundation 模块可能很诱人,但实际上并非如此,因此我不鼓励这种想法(以防您要拥有它)。将其视为较大特征层中的内部子层

    【讨论】:

    • 我对在功能层中具有模块依赖关系感到非常不满意。哈哈。似乎在 Project/Common 下是我应该使用的地方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    • 1970-01-01
    • 2020-02-12
    • 2021-04-19
    • 1970-01-01
    相关资源
    最近更新 更多