【问题标题】:One application instance for two domain name两个域名一个应用实例
【发布时间】:2011-03-04 23:13:24
【问题描述】:

我在 ASP.NET 中有两个完全相同的 Web 应用程序(相同的业务逻辑、相同的 DAL、相同的数据库方案但不同的实例)。

我唯一需要更改的是设计(徽标、颜色……)和文本(全球和本地资源)以解决两个独立的业务部门。我们不能“子域”应用程序,因为我们需要两个应用程序“似乎”是独立的。

为 2 个 Web 应用程序只运行一个实例是个好主意吗?

例如:

我将有 2 个主机名:mycompagny.com 和 mycompagny2.com,我将放置一个 HTTP 模块,该模块将设置一个字符串,该字符串将在我的应用程序中传播,例如“company”和“company2”。我将只实例化 dal 一次,但连接字符串会根据字符串 'company' 或 'company2' 而变化。

有什么优点和缺点吗?还有其他选择吗?

[更新] 仅供参考,它是一个多业务和多租户应用程序,因为这两个应用程序都将具有应用程序某些部分的自定义主题。

例如:

mycompagny.com/Busineess1、mycompagny.com/Busineess2、mycompagny.com/Busineess3、.. 和 mycompagny2.com/Busineess2、mycompagny2.com/Busineess2、mycompagny2.com/Busineess3、...

【问题讨论】:

    标签: asp.net architecture web-applications


    【解决方案1】:

    听起来您正在描述一个多租户应用程序。 Here 很好地概述了在 ASP.Net 中使用多租户的一些挑战。其实最近在Multi-Tenant ASP.Net MVC应用上产生了相当多的信息,所以也值得一看。

    【讨论】:

      【解决方案2】:

      是的,这一直都是这样做的..即使对于大型网站也是如此。

      在 ASP.NET 中,您可以解析 Request.Url 并根据域名确定要显示哪些内容或要检索哪些数据。

      当您实例化 DAL 时,您必须指定要连接到哪个数据库。

      【讨论】:

        【解决方案3】:

        所以在每个请求中,您检查 Request.Url,实例化 DAL,然后处理您的资源?我认为您应该在 Application.Start() 处实例化 DAL...

        那么,您如何以及“在哪里”设置配置以防止传递 Request.Url 字符串? 我有点担心,因为实例化 DAL 是一个代价高昂的过程……所以未来是否存在“性能问题”?

        【讨论】:

        • 是的,但我可以实例化 DAL 并在请求期间经常对其进行配置,例如 DAL = new DAL();在 Application.Start() 和请求期间,执行类似 DAL.Context = "mycompagny2";如果 DAL.Context 为空,这是 Compagny1 将运行...
        猜你喜欢
        • 2017-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-03
        • 1970-01-01
        相关资源
        最近更新 更多