【发布时间】:2014-12-08 08:45:09
【问题描述】:
我正在一个小型团队工作,该团队设计一个流程管理系统,供同一行业内的多个不同客户使用。系统的目标和客户的高水平要求非常相似。然而,正如预期的那样——一旦我们开始深入挖掘他们的个人需求,我们最终会为每个客户进行一些相当广泛的定制,涉及几乎所有内容,包括数据、输入表单、验证、工作流、报告等。
将所有这些加起来,我们意识到多租户架构可能是实现这一目标的最佳方法。后端远远超出了设计范围,它是一个 .net 中的 RESTful api,由 ServiceStack、RavenDB 和 Sql Server 构建。任何熟悉 ServiceStack 的人都会知道它非常灵活,并且在构建时考虑了可插拔性——这使得实现多租户 REST api 比我们预期的要容易得多。我们使用一个非常简单的约定,通过检查会话中属于每个请求的值来识别和授权租户(所有“特定于租户的”请求都必须经过身份验证,以便始终有可用的会话)。因此,目前几乎不需要在任何路由 url 中跟踪或传递来自客户端的租户 ID。因此,对于后端 api,我们已经实现了我们的设计目标,即拥有一个支持不同客户的单一代码库,具有大量代码重用和根据需要自定义/扩展租户特定功能的灵活性。
因此,由于后端大部分都被摆平了,我们将注意力转移到前端,在前端,我们确实在努力在 AngularJS 中实现类似的多租户方法。部分问题在于我们对 Angular 比较陌生。我们有一些使用标准“文件夹模式”构建单一用途应用程序的经验,但是当我们在这里查看我们的多租户需求时,我们真的很难将所有内容(一般项目结构/路线/视图)联系在一起以支持相同的多租户- 我们通过后端实现的 AngularJS 中的租户设计目标(支持重用、灵活性和定制的单一代码库)。 module pattern 似乎是为每个租户“插入”自定义功能的一个很好的选择,但我们仍然缺少一个整体架构方法,它为我们提供了一个支持上述目标的单一 AngularJS 代码库。任何 AngularJS 专业人士都可以帮助我们克服困难并在这里推荐一种方法吗?
谢谢!
【问题讨论】:
-
我相信你必须更具体一点,否则会因为“太宽泛”而被关闭。
-
如果您刚刚为指令/模板/控制器/服务器创建完全独立的系统,则发布一些代码的小示例可能会有所帮助。然后答案将能够向您展示如何重构它们。
-
同意上述观点,如果没有更多细节,真的很难提出一个方法,你的布局会改变吗?是否只是一些小的验证,是否在不知道租户之间发生什么变化的情况下使用 css 很难提出模式。