【发布时间】:2011-11-28 17:11:20
【问题描述】:
我们目前正在开发一个 asp.net mvc3 (aspx) 多租户网站。我们在 web.config 中创建了一个租户配置部分,其结构如下:
<tenants>
<tenant name="client1" baseUrl="client1.domain.com">
<settings>
<setting name="siteName" value="client 1 site">
</settings>
</tenant>
<tenant name="client2" baseUrl="client2.domain.com">
<settings>
<setting name="siteName" value="client 2 site">
</settings>
</tenant>
</tenants>
在我们的代码中,我们或多或少有一个租户构建器,它从我们的 ITenant 接口创建具体的类。
一旦我们能够解决它,一切都会很好地为每个租户呈现我们的网站。但是,我对做两件事的方式感到不舒服。 还要注意,当我们进行依赖注入时,我们没有使用第 3 方 IOC 容器(现在所有 DI 都是自定义的)。
控制器动作覆盖 - 目前我们的租户中有一些方法充当控制器动作覆盖(返回一个 ActionResult),在实际控制器动作中被调用。例如 - 如果我们需要 Home/Index 的租户特定逻辑,我们将执行以下操作:返回 currentTenant.HomeIndex()。 我可以使用 ControllerFactory 或 ServiceLocator,而不是这样做吗?如果是这样,有人可以解释解决此问题的最佳方法吗?
访问 - 现在我们的两个租户等同于以下内容:client1 = 免费用户,client2 = 付费用户。 虽然我们使用 MembershipProvider 来授权用户,但我们创建了一个 ActionFilter 来检查用户类型/级别并继续或重定向到适当的站点。有没有更聪明的方法来做这些检查?
提前致谢。
【问题讨论】:
标签: asp.net-mvc-3 dependency-injection multi-tenant