Sitecore Multisite设置Visual Studio项目的最佳实践

时间:2015-09-24 11:50:19

标签: asp.net-mvc sitecore multisite sitecore8 sitecore-mvc

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

在我看来,有两种方法。

方法1:

-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

方法2

-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个以上的网站。

2 个答案:

答案 0 :(得分:3)

我个人的偏好是让所有人聚集在同一个网站项目中,因为它迫使团队考虑他们对彼此的影响,同时也希望通过重复使用来寻找潜在的节省。

在您的结构中,您还应该考虑共享'的概念。所有站点都可以使用的视图和控制器。有一些简单的视图(如错误消息渲染)通常只需要应用不同的CSS来保持它们的品牌。确保您的结构支持这种类型的重复使用。

因此,在您提出的两个选项中,我倾向于方法1,通过一些小的调整来支持共享的JS,CSS,视图和控制器。

答案 1 :(得分:3)

我还有一个替代方案可以解决这个问题。目前正在开展一个庞大的项目,有数十名开发人员和相当官僚的部署过程,我们引入了以下方法:

  1. 项目由多个逻辑子部分组成,实际上是个别网站。
  2. 我们将这些网站设置为具有自己的控制器,视图等的MVC区域
  3. 最重要的 - 我们将MVC区域设置为可单独插入的DLL。因此,每个网站都是一个独立的解决方案项目,拥有自己的资源和静态资源;在构建时,所有内容都复制到所需的路径下,DLL将转到\ bin文件夹。
  4. 另一个用于共享(由所有网站)资源的类库,仅由那些需要该功能的网站引用
  5. 在Sitecore中,我们有相同的严格原则 - 内容,布局,渲染尽可能隔离,不得重复使用个别内容(除非来自共享资源文件夹)。
  6. 这种方法已经为我们提供了近一年的时间,并且已经证明其灵活性,更容易部署以及相当更少的代码合并冲突。如果您只在一个站点下工作 - 您不需要重新编译和重新部署所有内容 - 只需在bin文件夹中替换一个dll即可。

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

    参考文献(更多内容阅读):

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

    Sitecore with MVC Areas as pluggable Module