如何设置具有多个网站的 Sitecore 8.1 MVC 项目

How to set up Sitecore 8.1 MVC project with multiple website

我计划在一个 visual studio 解决方案中为 2 个网站设置一个 Sitecore 8.1 MVC 项目,所以我应该遵循哪种方法:

方法一:

我是否应该在一个解决方案中创建两个 MVC 项目

Sample.SC.Model(C#class 库)

Sample.SC.Utility(C# class 库)

Sample.SC.Web.Website1(MVC 项目)(该项目将包含布局、子布局以及 Website1 特定的所有内容)

Sample.SC.Web.Website2(MVC 项目)(该项目将包含布局、子布局和特定于 Website2 的所有内容)

方法二:

我是否应该只创建一个 MVC 项目并将 Website1 布局和 Website1 子布局放在 Website1 文件夹中,将 Website2 布局和 Website2 子布局放在 Website2 文件夹中

Sample.SC.Model(C#class 库)

Sample.SC.Utility(C# class 库)

Sample.SC.Web.网站(MVC项目)

****Sample.SC.Web.网站节点下的文件夹结构****

布局

网站 1(将包含特定于网站 1 的布局)

Website2(将包含特定于 Website2 的布局)

子布局

Website1(将包含特定于 Website1 的子布局)

网站 2(将包含特定于网站 1 的子布局)

我也打算在这个项目中使用GlassMapper和TDS。

谢谢

我认为您正在寻找一个令人信服的技术理由来选择一种方法而不是另一种方法,但我认为没有。

最终,一旦部署这两种方法,将生成一个网站。虽然人们有不同的偏好,但两者都可以。

其中大部分归结为网站之间的相同点和不同点。它们是完全独立且无关的吗?如果是这样,那么您可能会发现选项 1 更可取,因为每个项目的混乱情况会更少。

但是,如果这两个站点将共享元素,那么使用选项 2 可能更易于管理。

我认为 TDS/Glass 的使用不会真正影响您的决定。

我建议您在这种情况下使用 Sitecore 区域。 您将拥有如下图所示的结构:

有关 Sitecore 8.1 的更多信息您可以找到的区域here

在 Views forlder 下,您将有 2 个子文件夹:Layout 和 Sublayout。 我建议不要命名文件夹 Sublayout 因为如果是 MVC 解决方案你不使用 Sublayout 你将使用视图。 这是网站项目的结构 (Sample.SC.Web.Website) 您可以在解决方案上创建多少个项目,但我不建议仅针对模型创建项目。可以在区域文件夹下添加模型。

我会选择第二种方法,我认为第一种方法需要更多的努力来实现,原因如下:

  1. 您必须单独发布每个站点。

  2. 可能每个站点都有 DLL,这需要注意。

  3. 您必须照顾好两个网站的文件,因此它们不会在您部署后被合并或替换。 例如:
    Website1 > Css > site.css
    网站 2 > Css > site.css

部署后这些文件将相互覆盖。

所以我认为你必须在每个 mvc 项目中做这样的事情:

网站 1 > WebsiteOneName > Css > site.css
Website2 > WebsiteTwoName > Css > Site.css

  1. 每个站点都有 web.config 文件,这是您需要处理的事情。 (两者一个配置文件)

我会选择选项 1,原因如下:

  • 您以后将无法将一个站点迁移到另一个 Sitecore 安装,因为源文件是捆绑在一起的。在使用解决方案 2 时,这将是 很多 的工作,具体取决于您的网站和解决方案将增长到多大。仅当您 300% 确定将来不会发生这种情况时
  • 两个站点的开发生命周期将紧密地联系在一起:当有理由对一个站点进行快速迭代时,这将更加困难。

为防止重复文件,请务必考虑良好的命名约定和文件夹结构,并考虑共享组件。

最后,部署工作量不应该太大,尤其是在持续部署到位的情况下。

Sitecore 8.1 已经在控制器渲染模板中引入了区域,因此现在您可以在 MVC 项目中使用 MVCAreas 来配置多站点实施。并使用 ResolveArea 管道解析您的区域,如下图所示 ResolveArea Pipeline configuration

更多信息请查看this