我正在寻求有关最佳实践的建议,该建议可用于创建支持多站点(多租户)的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个以上的网站。
答案 0 :(得分:3)
我个人的偏好是让所有人聚集在同一个网站项目中,因为它迫使团队考虑他们对彼此的影响,同时也希望通过重复使用来寻找潜在的节省。
在您的结构中,您还应该考虑共享'的概念。所有站点都可以使用的视图和控制器。有一些简单的视图(如错误消息渲染)通常只需要应用不同的CSS来保持它们的品牌。确保您的结构支持这种类型的重复使用。
因此,在您提出的两个选项中,我倾向于方法1,通过一些小的调整来支持共享的JS,CSS,视图和控制器。
答案 1 :(得分:3)
我还有一个替代方案可以解决这个问题。目前正在开展一个庞大的项目,有数十名开发人员和相当官僚的部署过程,我们引入了以下方法:
这种方法已经为我们提供了近一年的时间,并且已经证明其灵活性,更容易部署以及相当更少的代码合并冲突。如果您只在一个站点下工作 - 您不需要重新编译和重新部署所有内容 - 只需在bin文件夹中替换一个dll即可。
因此,将其与您的问题相结合,方法1 将是一个答案。
参考文献(更多内容阅读):
Sitecore MVC areas as pluggable separate DLL - making areas further more independent