【问题标题】:Multi level sub Domains for a Multi-tenant Application多租户应用程序的多级子域
【发布时间】:2016-05-31 16:10:01
【问题描述】:

我正在处理的一个项目曾经是一个内部 Intranet 应用程序,但现在它正在被移植到一个多租户 Internet 应用程序。通常,在部署任何 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 的现有url 并在IIS 中添加特定绑定以将请求的url 指向主机位置。

当用户输入 url http://tenant.company.com 时,他们将获得位于 http://webapp.company.com 的应用程序。这种方法的问题是我们可能会部署额外的应用程序,而这是不可扩展的。

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

【问题讨论】:

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


    【解决方案1】:

    将客户端/租户用作主主机 url 的一部分

    http://tenant.webapp.company.com

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

    实际上,您可以将wildcard certificate 用于*.webapp.company.com,这意味着您可以扩展此方案而无需额外的 IIS 配置。

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

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

    【讨论】:

    • 感谢您的回复。我一直倾向于子域选项,因为它是最优雅的,但不幸的是,IT 部门不太热衷于工作,因此这种方法不可用。我将把它存储在用户数据库表中,以避免在 URL 中包含客户端。再次感谢。
    猜你喜欢
    • 2011-08-10
    • 1970-01-01
    • 2021-08-08
    • 2018-08-29
    • 2011-05-05
    • 2015-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多