我希望将多租户添加到我正在开发的.net核心MVC应用程序中。
我的目标是建立一个核心项目,其中包含基本功能,包括控制器,视图,资产等。
然后我希望每个租户有一个单独的项目,它可以覆盖核心项目的默认值。目前我正在尝试解决覆盖控制器的任务,不仅仅是在控制器级别,而是能够覆盖控制器中的各个动作。
我应该做些什么呢?我在考虑IControllerFactory,但不确定这是否是.net核心中的正确位置?
我假设IoC可能会实现这一目标,但需要指向正确的方向。
有人对此有任何想法吗?
答案 0 :(得分:1)
这是我在当前项目中设计它的方式,我的要求与您的要求略有不同,因为它的多租户但租户可以在多个国家运营,每个租户的功能相同但每个国家不同,下面的设计有望为您提供一些帮助您的方法。
我将控制器视为导航机制,让它们保持轻薄。我每个国家/地区都有一个区域(在您的方案中,这可能是每个租户的一个区域)
每个区域控制器只是引用一个基本控制器
基本控制器非常轻巧,因为我们希望能够使用我们的DI容器为每个国家/地区实现自定义逻辑。让我们通过编辑方案来获取许可证。
编辑许可证调用_editPermitManager,它是IEditPermitManager类型注入我们的控制器。我在新西兰的系统中有两个这样的实现,因为它是一个特殊情况,一个是所有其他国家使用的(但你可以轻松地在每个国家实施)。
流程是用户导航到/ blah / NewZealand / Permit / Edit / 4点击提交这是指向NewZealand的Permit控制器因此ninjects注入New Zealand编辑管理器并且这在编辑流程上被调用,我也注入了INAVigationService(_navigationService.Route)使我可以根据每个国家/地区指向不同的视图。
希望这能为您提供一个起点。