设置 Visual Studio 项目的 Sitecore 多站点最佳实践

Sitecore Multisite Best Practice for setting up Visual Studio Project

我正在寻求有关创建支持多站点(多租户)的 asp.net MVC visual studio 解决方案的最佳实践的建议。我们想做的一件事是尽量减少回归缺陷,这样开发人员就不会修改错误的网站代码库等。

我认为有两种方法。

方法一:

-Services (Project)
    |- Site A
        |-Service.cs
    |- Site B
        |-Serviceb.cs
|-Repository(Project)
    |- Site A
        |- Repository.cs
    |- Site B
        |- Repositorya.cs
|-MVC (Project)
    |-Areas
        |-Site A
            |- Controller
            |- View
        |-Site B
            |- Controller
            |- View
    |-Content
        |-Site A
            |- CSS
            |- JS
        |-Site A
            |- CSS
            |- JS

方法二

-Services.SiteA (Project)
        |-Service.cs
-Services.SiteB (Project)
        |-Serviceb.cs
-Repository.SiteA(Project)
        |- Repository.cs
-Repository.Site B(Project)
        |- Repositorya.cs
-MVC.SiteA (Project)
        |- Controller
        |- View
        |Content
            |- CSS
            |- JS

-MVC.Site B
        |- Controller
        |- View
        |Content
            |- CSS
            |- JS

有人可以帮我看看哪个选项更好吗?并不是说该解决方案需要支持 8 个以上的网站。

我个人的偏好是让每个人都参与同一个网站项目,因为这会迫使团队考虑他们对彼此的影响,同时还要通过重用寻找潜在的节省。

在您的结构中,您还应该考虑所有站点都可以使用的 'shared' 视图和控制器的概念。有一些简单的视图(如错误消息呈现)通常只需要对其应用不同的 CSS 即可保持品牌形象。确保您的结构支持这种类型的重用。

因此,在您提供的两个选项中,我更喜欢方法 1,并进行一些小的调整以支持共享 JS、CSS、视图和控制器。

我有另一种选择来解决这个问题。目前正在从事一个庞大的项目,有数十名开发人员和相当官僚的部署过程,我们引入了以下方法:

  1. 项目由多个逻辑子部分组成,实际上是独立的网站。
  2. 我们将这些网站中的每一个都设置为具有自己的控制器、视图等的 MVC 区域
  3. 最重要 - 我们将 MVC 区域设置为可单独插入的 DLL。所以每个网站都是一个正在解决的独立项目,有自己的资源和静态;在构建时,所有内容都被复制到它们所需的路径下,DLL 进入 \bin 文件夹。
  4. 另一个 class 共享(所有网站)资源的库,它仅被那些需要该功能的网站引用
  5. 在 Sitecore 中,我们有同样严格的原则 - 内容、布局、渲染尽可能高地隔离,不得重复使用任何个人内容(除非来自共享资源文件夹)。

这种方法已经为我们服务了将近一年,并且已经证明了它的敏捷性,更容易部署并且更少的代码合并冲突。如果您只在一个站点下工作 - 您不需要重新编译和重新部署所有内容 - 只需替换 bin 文件夹中的一个 dll。

因此,结合您的问题,方法 1 将是一个答案。

参考文献(更多阅读):

Sitecore MVC areas as pluggable separate DLL - making areas further more independent

Sitecore with MVC Areas as pluggable Module