【问题标题】:Web API structure for multiple clients [Multitenancy]多个客户端的 Web API 结构 [多租户]
【发布时间】:2017-01-06 00:27:32
【问题描述】:

我有以下情况:

我有一个通过 C# WebAPI 访问数据的 Web 应用程序。我需要在其中应用multitenancy 的概念,以便我的应用程序可以被多个客户端访问,并且每个客户端都可以单独访问他们的数据库。

面对这个需求,我研究了 * 葡萄牙语,发现了以下问题:

Web application for multiple people

Databases for different clients

至于我理解的概念,但是我的问题是关于我的 WebAPI 的部署以及最佳实践是什么:

我是否应该在 IIS 中部署和托管单个 API 实例(并通过代码重定向对数据库的访问)?

或者我应该执行单独的部署,即在 IIS 中托管多个 API 实例,每个实例都访问您的数据库?

如果第二个选项是最可行的,有没有办法以更自动化的方式进行多次部署?是否有任何云功能支持这种部署升级(Azure、Amazon 等)?

【问题讨论】:

标签: c# database asp.net-web-api multi-tenant


【解决方案1】:

几点:

  1. 您可以使用放置在负载平衡器后面的单个应用程序。
  2. 对于每个请求,您都可以从授权标头中识别租户。
  3. 根据识别选择数据库分片,实现数据库隔离
  4. 拥有单个实例有助于轻松升级和问题修复/部署。
  5. 如果您选择数据库分片,请查看 Azure 分片映射。

HTH

【讨论】: