我计划在一个visual studio解决方案中为2个网站设置Sitecore 8.1 MVC项目,以便我遵循哪种方法:
方法1:
我应该在一个解决方案中创建两个MVC项目
Sample.SC.Model(C#类库)
Sample.SC.Utility(C#类库)
Sample.SC.Web.Website1(MVC项目)(此项目将包含布局,子布局以及特定于Website1的所有内容)
Sample.SC.Web.Website2(MVC项目)(此项目将包含布局,子布局以及特定于Website2的所有内容)
Aproach 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的布局)
Sublayout
Website1(将包含特定于Website1的子布局)
Website2(将包含特定于Website1的子布局)
我也打算在这个项目中使用GlassMapper和TDS。
由于
答案 0 :(得分:3)
我建议您在本案例中使用Sitecore区域。 您将拥有如下图所示的结构:
有关Sitecore 8.1的更多信息,您可以找到here
在Views forlder下你将有2个子文件夹:Layout和Sublayout。 我建议不要命名文件夹Sublayout,因为如果是MVC解决方案,你没有使用Sublayout,你将使用视图。 这是Website项目的结构(Sample.SC.Web.Website) 您可以在解决方案上创建多少个项目,但我不建议仅为模型创建项目。可以在Areas文件夹下添加模型。
答案 1 :(得分:1)
我认为您正在寻找一种令人信服的技术理由来选择一种方法而不是另一种方法,但我不认为有一种方法。
最终,两种方法一旦部署,将产生一个网站。虽然人们有不同的偏好,但两者都有效。
其中大部分将归结为网站之间的异同。它们完全分开且无关吗?如果是这样,那么您可能会发现选项1更为可取,因为每个项目的混乱程度会更低。
但是,如果这两个站点将共享元素,那么使用选项2进行管理可能更简单。
我认为TDS / Glass的使用不应该影响你的决定。
答案 2 :(得分:1)
我会选择选项1,原因如下:
要防止重复文件,请务必考虑良好的命名约定和文件夹结构,并考虑共享组件。
最后,部署工作量不应太大,尤其是在持续部署的情况下。
答案 3 :(得分:0)
我会采用第二种方法,我认为第一种方法需要更多的努力来实施,原因如下:
您必须单独发布每个网站。
你可能每个网站都有DLL,这个东西需要照顾。
您必须处理两个网站的文件,因此在部署后不会合并或替换它们。
例如:
网站1> Css> site.css
Website2> Css>的site.css
部署这些文件后会相互覆盖。
所以我认为你必须在每个mvc项目中做这样的事情:
网站1> WebsiteOneName> Css>的site.css
Website2> WebsiteTwoName> Css>的site.css
答案 4 :(得分:0)
Sitecore 8.1已经在Controller Rendering Template中引入了区域,所以现在您可以在MVC项目中使用MVCAreas来配置多站点实现。并使用ResolveArea管道解析您的区域,如下图ResolveArea Pipeline configuration
有关详细信息,请查看this