【发布时间】:2025-12-01 19:00:02
【问题描述】:
我正在使用 ASP.NET MVC 开发一个多租户应用程序,在对多租户和 SaaS 进行了很好的研究之后,我发现有很多资源可用于实现数据层(数据库:按 Schema 分离,按数据库或共享)但可用于实现业务和 UI 层的资源非常有限。
我选择了单独的数据库方法。
现在,为了使其真正实现多租户,我选择了基于插件的架构(如 umbraco 和 Nopcommerce),其中插件是具有基于租户的模型、视图和控制器的 MVC 应用程序。
这是我将如何开发它:
控制器工厂将根据租户(子域)进行初始化
将根据租户注入业务层(使用 DI)。
和UI(视图)将根据插件进行渲染。
但这样一来,一切都是多余的,无法分享共同的行为。
任何人都可以按照我可以分享常见行为的方式来帮助设计它吗?或者有更好的方法吗?
【问题讨论】:
-
请定义面临的问题,例如如何在 UI / 控制器中具有共同的行为。为每个租户维护单独的 UI / 控制器并不容易,因为您加入了租户并且租户必须等待部署更新才能设置此工作区。这不是最纯粹的多租户级别。分享您的明确问题并提出解决方案。
-
嗨@Seravanan,感谢您的评论。你是对的,我必须为每个租户添加一个不好的插件。但是假设我有一个通用的注册页面(视图),但验证和几个字段对于每个租户都不同,在这种情况下,如果验证规则和字段不同,我如何使用相同的视图和控制器(但是可以在运行时)。
-
您可以使用自定义表来存储视图页面 ID、租户 ID 和正则表达式。当特定租户发布数据时运行正则表达式。
标签: asp.net-mvc plugins architecture multi-tenant saas