我在ASP.NET中有两个完全相同的Web应用程序(相同的业务逻辑,相同的DAL,相同的DB方案但不同的实例)。
我唯一需要改变的是设计(标识,颜色,......)和文本(全球和本地资源)来解决两个独立的业务部门。我们不能“子域”应用程序,因为我们需要两个应用程序“似乎是”独立。
仅为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, ...
答案 0 :(得分:1)
听起来您正在描述多租户应用程序。 Here概述了在ASP.Net中使用多租户的一些挑战。最近在Multi-Tenant ASP.Net MVC应用程序上生成了大量信息,因此值得一看。
答案 1 :(得分:1)
是的,这是一直都在做的..即使是大型网站。
在ASP.NET中,您可以解析Request.Url并确定要显示的内容或要检索的数据,具体取决于域名。
当您实例化DAL时,您必须指定要连接的数据库。
答案 2 :(得分:0)
因此,在每个请求中,您检查Request.Url,实例化DAL然后处理您的资源?我认为你应该在Application.Start()...
实例化DAL那么How和“where”是否设置了配置以防止传递Request.Url字符串? 我有点担心,因为实例化DAL是一个代价高昂的过程......那么未来会出现“性能问题”吗?