Saas每个客户端有数据库 - 单点进入服务。性能开销?

时间:2011-03-23 17:22:30

标签: c# wcf saas

我正在构建SaaS应用程序,后端将是SQL Server和WCF服务。

这是我不用担心的地方..我计划为每个客户设置单独的数据库(由此决定)并根据他们的数据库对用户进行身份验证。那也决定了。

将有一个中央数据库,它将拥有客户信息,例如数据库是什么以及使用哪些端点。

理想情况下,我想要这样的事情:

  • 一个。客户端命中主页ASP.NET或 Silverlight或开放客户端应用程序 PC /移动设备/等
  • 湾客户ID中的类型,用户名 和密码
  • ℃。正在调用主URL
  • d。我将拉出端点和数据库 此客户ID的信息。一世 确实希望WCF端点信息 可配置为未来 扩展/升级
  • 即需要以某种方式传递信息 关于端点/数据库到用户。 多个客户可以共享相同的WCF 端点。
  • F。从客户端调用端点和 登录到特定数据库。

通过这种方式,我可以看到性能如何,因为我不必在每次调用时都通过我的“系统”代理。客户端将知道它处理的端点和数据库。

但我不确定如何安全地实现这一点。因为步骤“e”中的数据库信息将流回客户。从技术上讲,即使它已经破解了客户 - 仍然无法从外部访问数据库本身。但不是很好......

你的想法是什么?或者应该使用companyID令牌进行每次呼叫,然后主要中央服务将路由这些呼叫?但这就像单点故障。我宁愿看到主服务器在登录时工作。

1 个答案:

答案 0 :(得分:1)

我们已经完成了WCF站点连接到处理1000个并发请求的多个数据库,WCF配置中有一些需要调整的位,但它应该可以正常工作。

我不明白为什么数据库信息需要“流回”给用户。

所有这些都可以很好地服务于服务器端。然后,可以根据用户凭据做出有关要连接的数据库的所有决定。

如果您希望多个端点处理负载,则在登录后重定向到相关(或随机)端点。然后将相关的路由/映射数据存储在相关端点上(如果您使用的是随机的话,则存储所有这些数据)。

您需要的只是他们决定使用哪个数据库的凭据。

提示:与所有绩效问题一样:衡量,衡量,衡量。您需要知道在预期负载下是否有多个端点有任何好处;所以建立一个负载测试。然后你可以看到性能受到的影响。在测量之前过度工程有时会起作用,但总是浪费时间。