【发布时间】:2020-12-04 17:49:44
【问题描述】:
我正在处理一个不完全是多租户的项目,但我们有多个使用本地应用程序的客户,其中一项要求是为所有这些客户提供一个代码库。目前,每个客户要么拥有原始代码库的一个分支,要么在公共存储库上拥有一个特殊分支。 多年来,自定义代码是他们每个人的模式,这导致数据库、业务逻辑和前端的差异。
对于我们正在构建的 REST API,我试图找到一种干净的方法来为每个客户端使用相同的 url,但有效负载也可能会有所不同。我需要能够根据配置调用适当的控制器。 对于 clientA,POST /api/visitor 的有效载荷形状可能是 {Name, Age},clientB 可能是 {Name, CardNumber, Height}。
我尝试在解决方案中将控制器移动到它们自己的项目中并使用 AddApplicationPart(clientAssembly),但是由于在 api 项目中引用了所有项目,endpoints.MapControllers() 由于名称冲突而崩溃。如果我完成这项工作,由于项目引用,它需要为每个客户部署代码,我认为这不是一个好主意。
我还研究了使用新的 .net core 3 动态路由功能,但我认为它应该用于转换请求而不是为其添加上下文。
有人遇到过这个吗?我是否应该跳过所有这些并在每条路由的 URL 中包含“租户”(此解决方案可能会被拒绝)?
【问题讨论】:
标签: .net .net-core architecture multi-tenant