2

我正在开发基于ASP.Net MVC的多租户应用程序。根据用户设置,该站点需要重定向到该用户的单独模块/区域。每个区域都使用一些常用的服务,但是每个区域/模块的网站外观和导航都完全不同。模型也从基础库中覆盖,我们需要单独的团队来开发模块(其中包括控制器,视图和模型)。在ASP.Net中注入完整模块MVC

我们正在考虑像Unity或Ninject这样的依赖注入工具。问题是我们如何在主网站注入完整的模块/区域。控制器和模型部分是很好理解的。不清楚的是如何开发视图,以便正确的视图被搜索和使用。

UPDATE
我们需要用不同的团队开发这个应用程序。每个团队将为每个子站点/区域开发一个模块。有一个提供公共服务,框架和工作流程的业务层。 MVC主要是一个表示层。每个团队为每个客户开发一个子站点,为该客户使用特定的品牌。随着我们添加更多客户,我们需要添加更多网站。我们可以使用主题等。但是,客户具有不同的屏幕和每个屏幕不同的字段集。但是,所有这些字段都会捕获相似的数据,但最终用户需要以不同的角色来捕获数据。例如。前台人员捕获不同的号码。每个客户和后端人员的领域完成其余部分。同样,可能有多个用户面对客户的客户(访客)。有一个共同的组件,用于管理访客流量,每个办公室会话中的前台服务等。问题是我们如何独立开发MVC子站点并使用依赖注入将它们置于共同站点之下。特别是意见。部署脚本是唯一的选择吗?

回答

1

从我的理解。

您的目标是使用类似于Ninject的依赖注入,以便您可以在应用程序中使用的特定区域中注入基于Controller的不同实现?

如果是这种情况,您可以通过Ninject命名属性来设置NinjectModules,该NinjectModules绑定由您的接口或抽象类定义的特定服务的某些实现,您可以将它放在Controller构造函数上。

例如,你可能有一个通用搜索控制器是向公众开放的区域,如

http://example.com/用户 /首页/搜索

使用Ninject命名你属性可以注入由该控制器使用的ISearchService的实现,其可以为公共用户提供有限量的功能以搜索属性,

然而,在该网站的其他区域,如管理员或谁张贴在网站上自己的属性可能会通过搜索功能

http://example.com/租户 /首页/搜索

更多接入用户这个HomeController可以有一个通过其构造函数传递的ISearchService的不同注入实现。

只要确保加载所有NinjectModules在Global.asax中

这下Ninject Contextual Bindings documentation here

我是从你在这里给我什么事情很少的信息可以发现,你可能会得到如果您提供了更多关于您面临的架构设计考虑事项的上下文/代码示例的更好答案。