但是每个网站也将从基础上高度定制和扩展。例如,我们面向大型公共公司的网站将在公司域对象上具有“子公司”和“股票符号”字段,而我们面向初创企业的网站将具有“创投公司”和“融资”属性。外观也会有很大变化,尽管我们试图保持HTML尽可能一致(除了额外的表单字段以获取额外的域对象属性等)。我们还将只适当地覆盖图像,以便我们可以在网站之间重用相同的按钮图形。
无论如何,我们正在努力找出最佳方式来因素化和架构事物,以便我们可以尽可能多地重用代码和测试,而不限制我们添加每个应用程序属性并在应用程序之间变化UI的自由。
我熟悉如何处理类似于StackOverflow / SuperUser / ServerFault(或MSDN / TechNet)中找到的有限自定义多租户,其中UI略有不同,数据模型基本相同。但是当模型和UI非常不同(但继承自公共基础)时,我不太确定如何继续。
我不太担心运营问题,因为我们可能会在单独的应用程序域中运行每个网站,并将它们托管在单独的数据库上。我更担心降低长期代码维护成本,增加敏捷性(例如,易于向基础添加新功能而不会破坏派生应用程序),以及在构建第2、3、4等网站时实现短期开发/测试成本节省。
我寻求高层次的指导和建议,还有使用现代ASP.NET MVC实践使这些指导变为现实的具体建议。
我知道这是一个非常泛泛的问题,但首先我正在寻找高层次的指导以及具体的技巧和诀窍,以便在ASP.NET MVC中应用该指导,包括以下内容:
- 建议在哪里跨Visual Studio项目拆分基类/派生类
- 源代码控制提示以避免分叉
- 数据库架构提示(值得一提的是,我们的数据库都很小 - 每个表少于10K行,因此开发/测试成本比DB性能更重要)
- 有关重用控制器/视图等与“基”模型属性相对应的提示,特别是有关重用UI的提示,例如“新客户”表单,其中将具有基本和派生属性的混合。
有人有关于如何设计这样的多租户应用程序的好建议吗?