问题标签 [multi-tenant]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1270 浏览

django - 在 Google App Engine 上开发多租户 Django Proj 的方法建议

我希望得到一些关于在 Google AppEngine 上开发多租户 Django 项目的最佳方法的建议。

需要考虑的一些想法。

  • 我认为使用 djnago.contrib.sites 是必须的。

  • 我想使用现有的应用程序,例如 django-profiles 和 django-registration,我知道他们的模型需要移植。

  • 是否可以将多个域指向 GAE 应用程序并从请求标头中自动选择站点?

  • 如果不是多个域,有没有办法说接受请求说 www.example.com/tenantA/login 和 www.example.com/tenantB/login 并将它们推送到一个视图但使用知识 Tennant 而不更改所有视图,也许使用自定义管理器来隐藏视图的复杂性。

通常希望这将是对您过去采取或计划采取的任何方法的讨论。

期待任何评论/答案。

问候

标记

0 投票
4 回答
2092 浏览

asp.net-mvc - 从通用模板应用程序“继承” ASP.NET MVC 站点?(多租户)

我们正在构建大约 10 个 ASP.NET MVC 站点,这些站点具有一组通用功能(以及相应的 URL、路由、控制器、操作和视图)。这些站点还将共享一组基础域对象(例如用户、公司)和这些对象的基础属性(例如名称、地址等)。

但每个站点也将从基础高度定制和扩展。例如,我们的大型上市公司网站将在公司域对象上具有“子公司”和“股票代码”字段,而我们的初创公司网站将具有“风险投资公司”和“资金”属性。外观和感觉也会有很大的不同,尽管我们试图保持 HTML 尽可能一致(为额外的域对象属性取模额外的表单字段等)。我们还将谨慎地覆盖图像,例如,我们可以跨站点重复使用相同的按钮图形。

无论如何,我们正在尝试找出如何最好地分解和构建事物,以便我们可以重用尽可能多的代码和尽可能多的测试,而不会限制我们添加每个应用程序属性和改变应用程序之间 UI 的自由。

我熟悉如何处理像您在 StackOverflow/SuperUser/ServerFault(或 MSDN/TechNet 中)中找到的有限定制多租户,其中 UI 略有不同,数据模型或多或少完全相同的。但是当模型和 UI 非常不同(但继承自一个共同的基础)时,我不太确定如何继续。

我不太担心操作问题,因为我们可能会在单独的应用程序域中运行每个站点并将它们托管在单独的数据库中。我更担心降低长期代码维护成本,提高敏捷性(例如,在不破坏派生应用程序的情况下轻松地向基础添加新功能),以及在我们构建第二个时实现短期开发/测试成本节约,第三,第四等网站。

我正在寻找高级指导和建议,以及如何使用现代 ASP.NET MVC 实践使该指导成为现实的具体建议。

我意识到这是一个非常笼统的问题,但对于初学者来说,我正在寻找高级指导以及如何使用 ASP.NET MVC 应用该指导的具体技巧,包括以下内容:

  • 建议在 Visual Studio 项目中拆分基础/派生的位置
  • 避免分叉的源代码控制技巧
  • 数据库模式提示(FWIW,我们的数据库都很小——每张表不到 10K 行,因此开发/测试成本比数据库性能更成问题)
  • 关于重用控制器/视图/等的提示。对应于“基本”模型属性,尤其是重新使用 UI 来处理“新客户”表单之类的内容,这些表单将混合基本属性和派生属性。

有人对如何构建这样的多租户应用程序有很好的建议吗?

0 投票
1 回答
786 浏览

asp.net-mvc - 将 NHibernate 应用程序转换为多租户的最佳实践?

我有一个简单的 ASP.NET MVC + OpenID + NHibernate应用程序(在 MSSQL Server DB 之上)。该应用程序是严格的单租户,仅支持 2 个角色(管理员用户)的多个用户。

我想将此应用程序转换为多租户应用程序。我的要求是有限的:我只需要介绍Account的概念,每个帐户都有自己的用户集,并且行为与原始的非多租户应用程序完全相同。帐户之间没有交互。

以最简单的方式进行此迁移的最佳实践是什么?特别是,我可以使用Account_id字段手动更新所有实体和存储库,并上传逻辑。但是,我想知道是否没有更聪明的方法可以以某种方式抽象这方面。

ps:app很轻量,我希望每个账号都引入一个新的数据库实例。

0 投票
2 回答
7629 浏览

asp.net-mvc - 使用 ASP.NET MVC 设置路由 {tenant}/{controller}/{action}/{id}?

我想设置一个多租户 ASP.NET MVC 应用程序。理想情况下,这个应用程序应该有一个带有 的路由{tenant}/{controller}/{action}/{id},每个tenant代表应用程序的一个逻辑实例(只是独立的多用户帐户)

细粒度的细节如何做到这一点对我来说仍然很不清楚。任何可用于使用 ASP.NET MVC 设置此类多租户方案的指南?

0 投票
3 回答
4926 浏览

asp.net-mvc - 是否有任何基于 ASP.NET MVC 订阅的入门工具包或示例?

基本上是处理基于订阅的服务的低级“管道”代码。我看到很多关于基本会员的事情,但没有处理订阅方面的事情(定期计费、用于设置计费的自动化作业、计费通知等)。这可能是阻止我将 ASP.NET MVC 用于我的 SaaS 想法的一件事,因为编写我自己的代码需要相当多的开发时间;如果我选择另一种选择,Ruby on Rails,我可以花250 美元购买一个可以完成所有这些工作的工具包. 对于 .NET,我什至没有发现任何与此相近的东西——我见过的所有 SaaS 示例应用程序都更像 StackOverflow 等,所有这些应用程序都有一个多人登录的站点,而不是你所在的 Web 应用程序模型拥有按月计费的订阅者,每个订阅者都有自己网站的用户和其他实体(例如客户、任务等)。

ASP.NET 是否有类似的东西,或者如果我必须编写自己的指南,那么我不会浪费太多时间?作为一家初创公司,这意味着我自己完成所有的编码工作。

我找到了这个,但它似乎只用于计费,并且似乎没有太多(任何?)关于如何设置它的文档。

0 投票
6 回答
8402 浏览

database-design - 多租户数据库:为什么在每个表中都放置一个 TenantID 列?

我看到的关于多租户数据库模型的每个教程都告诉您将 TenantID 放在每个表中:

但是,这对我来说似乎是多余的。为什么不将tenant_id列添加到表中并利用和zoos之间的外键关系?zoosanimals

您是否添加tenant_id到每个表只是为了防止连接变得太疯狂?它是针对错误的保护措施吗?性能考虑?

0 投票
4 回答
914 浏览

php - 同一数据库上的多个应用程序实例

我正在编写一个应用程序,该应用程序将作为服务和独立应用程序提供。它用 Zend Framework 编写并使用 MySQL。

在将其作为服务提供时,我希望用户在我的网站上注册并拥有诸如 customer1.mysite.com、customer2.mysite.com 之类的子域。

我希望将所有内容都放在一个数据库中,而不是为每个用户创建新数据库。

但现在我想知道如何做得更好。我想出了两个解决方案: 1. 在每个表中都有用户 ID,然后将其添加到每个数据库请求的 WHERE 子句中。2. 重新创建具有唯一前缀的表,例如“customer1_tablename”、“customer2_tablename”。

哪种方法更好?优点和缺点?是否有另一种方法可以将同一数据库上的用户分开?

莱昂蒂

0 投票
3 回答
2006 浏览

php - Zend Framework - 将变量传递给每个控制器

我正在处理 Zend Framework 中的多租户应用程序,它从子域名中获取它的tenantID(mod_rewrite -> index.php -> 将其与数据库匹配)。

我的问题是 - 如何设置此变量(租户 ID)以供每个控制器使用?

莱昂蒂

0 投票
2 回答
1541 浏览

asp.net-mvc - 如何使用 ASP.Net MVC 创建多租户应用程序?

这个问题与其他问题不同,因为到目前为止我看到的所有问题都是关于数据库的。我了解多租户的数据库方面,但我不能 100% 确定在做前端的路上。

我正在设计一种产品,该产品基本上是为客户提供的托管服务。就多租户而言,您可以考虑托管 FogBugz 帐户。客户注册后,他们获得了自己的子域,然后他们转到customerssubdomain.thenormalurl.com 并登录到他们的应用程序的一小部分。

当客户注册时,我们需要为子域设置 DNS 记录,但是从应用程序的角度来看,我们如何将应用程序“限定”到该客户?它只是应该查看发出请求的网址还是有其他方式?这对我来说似乎过于简单,但也许我只是想把应该简单的事情复杂化。

这在 ASP.Net 世界中通常是如何完成的?

0 投票
2 回答
604 浏览

grails - 如何在具有自定义外观的单个 grails 应用程序中处理多个客户?

我的应用程序需要在运行时支持多个客户。它们都将显示相同的数据,使用相同的控制器、服务,但具有不同的布局、css 和图像。

我的基本思路如下:

1) 有一个过滤器来验证并在会话中设置一个配置值 2) 我的控制器代码将按照以下方式调用一些东西:render(view:"/${session.userContext}/test/test")

所以对于 customer1,我们将渲染:views/customer1/test/test.gsp

理想情况下,我希望在 /views/customer1/ 目录中拥有所有自定义视图和布局,但站点网格在 /views/layouts 目录中查找布局,但我找不到解决方法。从这个意义上说,解决方案有点笨拙,因为我没有得到我想要的隔离级别。

理想的情况是,如果我可以在运行时设置 grails 渲染方法的根,例如,而不是从视图开始,查看 views/customer1 唉,我不知道如何做到这一点,但他似乎是最聪明的解决方案。

任何帮助将不胜感激。

干杯,

加夫