【发布时间】:2011-06-22 09:01:47
【问题描述】:
各位开发者/架构师,
这更像是一个建筑问题:
我有一个网络应用程序。该应用程序使用 ASP Membership API(froms 身份验证)进行用户/角色管理。
我们为每个客户托管一个单独的应用程序。所以基本上每个客户端在 ASP Membership 数据库中都有一个应用程序名称。该客户然后根据他的需要创建他的角色/用户。
我们在 IIS 上为每个客户端分别托管在客户端名称的虚拟目录下的原因是因为所有客户端都有其单独的应用程序名称(就 ASP 成员资格而言),并且底层数据库是独立的每个客户也是如此。
所以每个客户端都有一个单独的 URL,例如:http://mysite/client1。然后client1有他自己的用户、角色。应用程序使用的底层应用程序数据库是客户个人的。
Web 应用程序和数据库架构对于所有客户端都是完全相同的。
我无法对数据库部分做出任何决定。所以我不打算讨论这个。
但我想改变为每个客户端托管单独应用程序的方法。我想为所有客户托管一个应用程序:
这带来了一些问题:
第一季度。我将如何创建这些网址:http://mysite/client1,http://mysite/client2(因为我不能将所有客户端的名称放在主登录页面上,然后一旦用户选择客户端名称,提供用户名/密码....我不能这样做是由于业务的性质)*
第二季度。我不能创建单个应用程序(在 IIS 和 ASP 成员级别上)然后按角色分隔客户端,因为所有客户端都有自己的角色,另外,2 个或更多客户端可以有一个同名的用户;所以client1的userX和client2的userX。这些用户是不同的,但他们恰好有相同的名字。
* Q1 的一个解决方案可以是:我创建一个新的转发器应用程序,该应用程序在客户端虚拟目录下的 IIS 中分别为每个客户端托管。当客户打开他们的网址(例如:http://mysiteforworder/client1)时,他们会被重定向到(http://mysite/Default.apsx?app=hjuk98jkio8),其中(hjuk98jkio8)是客户的加密名称,我们在内部使用。
这将解决第一季度,但不是第二季度。
让我知道我有什么选择...
【问题讨论】:
-
或者在这种情况下可能是最好的方法,是单独托管应用程序(因为它正在发生......因为在这种情况下客户端实际上是单独的应用程序,即使所有应用程序看起来/行为同样...你们建议...)