1

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

方法一:

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

Sample.SC.Model(C# 类库)

Sample.SC.Utility(C# 类库)

Sample.SC.Web.Website1(MVC 项目)(该项目将包含布局、子布局和网站 1 特有的所有内容)

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

方法2:

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

Sample.SC.Model(C# 类库)

Sample.SC.Utility(C# 类库)

Sample.SC.Web.Website(MVC 项目)

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

布局

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

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

子布局

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

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

我还计划在这个项目中使用 GlassMapper 和 TDS。

谢谢

4

5 回答 5

3

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

在此处输入图像描述

有关 Sitecore 8.1 区域的更多信息,您可以在此处找到

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

于 2015-10-31T05:40:53.657 回答
1

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

最终,这两种方法一旦部署就会​​产生一个网站。虽然人们有不同的偏好,但两者都会起作用。

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

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

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

于 2015-10-31T00:53:49.767 回答
1

I would go with option 1, for the following reasons:

  • you won't be able to migrate one site to another Sitecore installation in the future, as the source files are tied together. When going with solution 2, that will be a lot of work, depending on how big your website and solution will grow. Only if you are like 300% sure that that will not happen in the future
  • The development lifecycle for both sites will be tied together very thightly: When there are reasons to iterate quickly for one site, that will be much harder.

To prevent duplicate files, make sure to think on a good naming convention and folder structure and think of the shared components.

In the end, the deployment effort shouldn't be too large, especially when continuous deployment is in place.

于 2015-11-02T21:14:50.417 回答
0

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

  1. 您将不得不单独发布每个站点。

  2. 可能您将拥有每个站点的 DLL,这需要注意。

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

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

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

Website1 > WebsiteOneName > Css > site.css
Website2 > WebsiteTwoName > Css > Site.css

  1. 每个站点都有 web.config 文件,这是您需要处理的。(两者都有一个配置文件)
于 2015-11-01T12:19:52.487 回答
0

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

有关更多信息,请查看

于 2015-11-18T10:32:33.827 回答