2010-06-17 100 views
1

我在ASP.NET中有两个完全相同的Web应用程序(相同的业务逻辑,相同的DAL,相同的DB方案,但不同的实例)。两个域名的一个应用程序实例

我需要改变的唯一事情就是设计(标识,颜色......)和文字(全球和本地资源)来应对两个独立的业务部门。我们不能“子域化”应用程序,因为我们需要这两个应用程序“似乎是”独立的。

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

例如:

我将有2个主机名:mycompagny.com和mycompagny2.com和我将把一个HTTP模块将设置,这将在我的应用如“公司”和“Company2的传播的字符串”。我只会对dal进行一次instanciate,但连接字符串将根据字符串'company'或'company2'而改变。

任何优点和缺点?任何其他的选择?

[更新] 只是为了信息它是一个多业务和多租户应用程序,因为这两个应用程序将在应用程序的某些部分自定义主题。

例如:

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

回答

1

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

1

是的,这是所有的时间......即使是大型网站。

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

在实例化DAL时,您必须指定要连接的数据库。

0

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

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

+0

是的,但我可以实例化DAL并在请求期间配置它,如 DAL = new DAL();在请求期间的Application.Start()和 期间,执行类似DAL.Context =“mycompagny2”的操作; 如果DAL.Context为空,这是Compagny1将运行... – dervlap 2010-06-17 13:56:29