我正在开发一个大型 ASP.NET MVC 站点,这是一项向客户出售的商务服务。我们主要向小型和大型机构销售,因此它不是收缩包装规模的。这些大客户会要求我们进行定制,大多比但包括定制布局以适应他们的网站。
我们目前的想法是,即使 MVC 使用仅调用其他代码的非常简单的 Controller (如推荐的那样)遵循其自然结论, View 也将是一个难题,因为它们不适合这种可组合性,在无论如何,我们一直在使用 Razor。很难对它们进行子类化并说“为这个客户做一些额外的事情”;特别是,很难为相同的构造提供略有不同的 HTML。
我们无法弄清楚如何让 Multi-Tenancy 和单租户工作干净,我们不希望 fork 代码库,即使对一个或多个客户的定制是彻底的。 (在可能的范围内,我们希望在所有客户之间保持数据库结构同构,我想这是我们为 Multi-Tenancy 做的方式,但由于规模和规模的原因,每个租户都必须是他们自己的 IIS 网站。隔离。)即使我们想出了一种覆盖一层自定义 View 的方法,这也将允许 View 中出现轻微的逻辑不匹配。
这样做的最新技术是什么?有哪些 war 故事? (这可能是主观的,但它主要是客观的,因为如果有一种模式或方法可以完全将其分解为本质,那当然是正确的答案。我认为这是一个有趣的问题。)
我很乐意提供更多细节。
最佳答案
我们最近开发了一个网站来支持我们的 5 个 Regents 机构。由于我们有固定的客户群,而且不太可能增长,因此我们做出了一些您可能不会做出的选择。例如,我们每个客户都有一个单独的数据库实例。显然,这不能很好地扩展,但它确实显着简化了模型,因此对我们来说它是有效的。
我使用的策略是:
content/themes
中的单独文件夹中。配置项用于设置主题文件夹,主 View 在为 CSS 和任何特定于站点的图像构建 url 时提取此配置项(大部分,如果不是全部,在站点 CSS 文件本身中处理)。 enums
以避免字符串比较。对于更复杂的应用程序或更多机构,我什至可能会开发一个单独的配置部分处理程序并将配置分离到它自己的部分或配置文件中。目前我们使用的是appsettings
,因为设置的数量很少,而且比较简单。 希望这可以帮助。
关于asp.net-mvc - 设计一个 ASP.NET MVC 3 站点以支持客户特定的 View 自定义而无需 fork ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8863334/