【问题标题】:Site Isolation in Multisite Sitecore Instance Specifically as it Applies to Sitecore多站点 Sitecore 实例中的站点隔离特别适用于 Sitecore
【发布时间】:2014-07-11 15:55:36
【问题描述】:

我知道有人就多站点 Sitecore 实例中的站点隔离提出了类似的问题,尤其是在提到 Tim's multi-site solution 的地方,但在尝试完全实现 Tim 的代码之前,我正在寻求进一步的澄清。

我们目前正在使用一个包含近十个站点的 Sitecore 实例。我们有一个单一的 Visual Studio 解决方案,它以一种或另一种方式将所有站点提供给一个代码库,这样所有 DLL 都是公用的,任何其他文件也可以是公用的。我们或多或少地开始通过将所有站点分解为他们自己的项目来处理这个问题,他们的每个项目结构都反映了单一的最终结构。这仅允许在修改 .csproj 文件等项目时减少“流失”,从而减少与其他并行工作的开发人员的冲突。虽然这绝对是一个不错的项目,但它比我们真正追求的更方便。

对于更多背景知识,我们在一个“流”中总共有五个 Sitecore 实例,它们是本地开发者的实例、开发实例、暂存实例,然后是两个生产实例。我们正在使用 Git 管理更改。

目前我们无法进行编译更改,比如对任何代码隐藏的更改,因为它适用于一个站点中的一个项目(这不会影响其他站点的功能),并且在部署该编译更改时无需其他必须依赖该 DLL 的站点。这成为问题的主要方式是,我们无法保证在推出任何代码时所有站点仍将运行;对单个站点的任何更改都可能同时破坏所有站点。在某些情况下,我所做的代码更改被错误地部署到破坏所有站点的开发中,因此这是一个完全实现的问题。我们也不想在每次代码更改时都测试每个站点,因为在不久的将来我们可能在 Sitecore 中拥有超过 30 个站点。

也许 Tim 的多站点解决方案可以做到这一点,但有没有办法真正隔离站点,使它们不依赖于相同的 DLL?那么我们是否可以为每个网站提供单独的 Visual Studio 解决方案(我觉得这很理想)?我已经看到其他答案提到蒂姆的解决方案是“孤立的”,但这对我来说太模棱两可了。 Tim 的解决方案在多大程度上“隔离”了站点?有没有更好的解决方案?

【问题讨论】:

    标签: git sitecore


    【解决方案1】:

    单个 Sitecore 应用程序实例本质上是一个或多个前端站点的虚拟托管环境。每个站点都由可以共享但并非必须共享的布局和 UI 组件组成。也就是说,您可以在每个站点的单独项目或解决方案中复制组件,这将解决该问题。但是,它会在所有站点上打开另一个重复代码的问题。解决一个问题,你需要多次。此外,当您部署 DLL 时,它将回收应用程序池,因此所有站点都将重新启动,因为它是同一个应用程序实例。我能提供的最好的指导是组织起来并进行一些编码治理。也许应该非常小心地更改所有站点使用的可能容易破坏多个站点的一组通用实用程序。虽然特定于站点的组件更多地处于边缘并且影响较小。此外,不要将您的 UI 组件与常用实用程序中的太多继承层和代码耦合。尽管它在逻辑上可能有意义,但它会产生很多可能导致您的问题的耦合。根据遇到相同挑战的经验,只需我的 2 美分。

    在我们的例子中,我们有一个由所有站点共享的核心实用程序库,一个用于共享 UI 组件的核心 Web 项目,然后为这些站点中的组件单独的特定于站点的 Web 项目。我们还尽可能避免全局配置更改以及事件和管道等功能的“过度修补”。而是尝试将您的代码限制在特定站点的范围内。

    【讨论】:

      【解决方案2】:

      如果您需要真正隔离 Sitecore 站点和部署,您可以选择每个站点都有自己的解决方案、IIS 网站(和应用程序池)、部署管道和所有共享功能/配置的模型通过 NuGet 包完成。在此模型中,您有一个 CM 服务器,所有站点都共享 Web。

      此外,您可以在每个站点上使用自定义事件提供程序隔离发布,该事件提供程序仅引发与给定站点的项目相关的事件,以便在每次发布时不会清除所有站点上的缓存。

      这种隔离方式目前在生产环境中运行,每台服务器有 70 多个站点,大约 80 名开发人员分布在大约 10 个团队中。

      【讨论】:

      • 这很有趣,我同意,但这里最大的警告是许可,因为每个实例都是使用的许可
      • 是的,不幸的是,当前的 Sitecore 许可模式确实如此。但对于拥有合适许可证的客户来说,这是一个有效的选择。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      相关资源
      最近更新 更多