多租户应用程序的多级子域

时间:2016-02-19 07:06:25

标签: asp.net-mvc iis url-routing asp.net-mvc-routing multi-tenant

我正在处理的项目曾经是一个内部Intranet应用程序,但现在它被移植到多租户互联网应用程序。通常,在部署任何Web应用程序时,我们会使用在加入之前很久就存在的格式http://webapp.company.com。 由于该项目现在是一个多租户应用程序,我试图在不同的架构之间做出决定。

1)使用客户端/租户作为主要主机URL的一部分

http://tenant.webapp.company.com

此方法需要额外的ssl证书和iis设置

2)将租户作为路由的一部分包含在内,租户名称将作为路由参数包含在内

http://webapp.company.com/{tenant}/my/route/url/{param}

在我看来,这种方法是“凌乱”的。我觉得这不是最正确的解决方案。

3)保留现有的http://webapp.company.com网址,并在IIS中添加特定绑定,将请求的网址指向主机位置。

当用户输入网址http://tenant.company.com时,他们将被提供给位于http://webapp.company.com的应用程序。此方法的问题在于我们可能部署其他应用程序,但这不可扩展。

我倾向于第1号方法,因为我有实施它的经验(没有额外的域名)。 4级域是理想的吗?关于什么方法比另一方更好的想法?可能是一种新方法?任何意见都表示赞赏。

1 个答案:

答案 0 :(得分:1)

  

将客户/租户用作主要主机网址的一部分

     

http://tenant.webapp.company.com

     

此方法需要额外的ssl证书和iis设置

实际上,您可以为*.webapp.company.com使用wildcard certificate,这意味着您可以在没有其他IIS配置的情况下扩展此方案。

此外,这种方法在路由方面最为优雅。在GitHub上甚至有一个MVC-Subdomain-Routing项目可以用于某个方向(或者如果项目满足您的要求)。

另请参阅this questionthis answer了解其他一些方法。