【问题标题】:Dependency injection with Niject and MVC and WCF and N- tier artichectureNiject 和 MVC 以及 WCF 和 N 层架构的依赖注入
【发布时间】:2013-10-01 11:29:15
【问题描述】:

我在 VS 2012 开始了一个项目;我的解决方案具有以下结构。

1) Web Interface (MVC 4) 调用 WCF 层

2) WCF 层调用业务逻辑层

3) 业务逻辑层调用Repository Layer(通用存储库)

4) 存储库调用数据访问层 (DAL = EF 5.0)

问题:

我想将 Ninject (ver 3) 用于 DI

1) 我需要在每个层/项目级别添加 Ninject 来解决 DI 吗?

我应该在哪一层添加以下代码来创建绑定。由于以下代码进入 NinjectWebCommon.cs 类进行绑定。

// 'real' implementations or (Bindings)

kernel.Bind<IRepository>().To<Repository>();
kernel.Bind<IAuthorBLL>().To<AuthorBLL>();

2) 我是否需要在我的解决方案的每个项目/层中添加 Ninject 并在每个 NinjectWebCommon.cs 类中定义绑定。

或者 binging 应该只在 WCF 层中定义,但是我需要在 WCF 项目中添加我的每个项目的引用。

或者 binging 应该只在 MVC 层的开头定义,但是我需要在我的 MVC 项目中添加我的每个项目的引用。

请指教。非常感谢。

如果您能指出任何具有上述所有层和 Ninject 的示例工作代码,那就太好了。我试过了,但找不到这样的东西。

【问题讨论】:

    标签: asp.net-mvc wcf dependency-injection ninject


    【解决方案1】:

    依赖注入的想法是,构造的每个类都在构造函数中声明它的依赖关系(通常)。
    最后一层将充当管弦乐队的领导者,并选择要使用的依赖关系。要做到这一点,该层需要依赖于所有底层(否则如何指向小号来播放部分 x,或指向实体框架存储库以进行数据处理)。

    但是,在您的情况下,您有 2 个应用程序(我从来不是超级粉丝,但我看到越来越多的人这样做)
    一个 mvc 网站和一个 wcf 服务。
    这两个应用程序都必须为他们的管弦乐队扮演管弦乐队的领导者。
    您的 mvc 网站应用程序将设置 ninject 来创建您的 wcf 服务组件。
    wcf 服务应用程序将设置 ninject 以创建一组特定的逻辑和存储库类。

    它会起作用,但我会考虑将 wcf 层放在一起。
    通常您的 mvc 网站将是唯一的消费者,那么 wcf 服务的意义何在?
    如果您有更多消费者,请忽略它备注并用 2 个 ninjects 设置它。

    【讨论】:

    • 您好 Kristof,感谢您的回复,是的,我有更多的消费者移动视图站点也将访问 WCF 层。我现在会在我的解决方案中尝试你的建议,如果它有效,我会更新你。非常感谢您的宝贵时间。
    • 祝你好运,请务必检查 ninject 自动注册顺便说一句!
    猜你喜欢
    • 1970-01-01
    • 2011-02-01
    • 1970-01-01
    • 2023-03-19
    • 2018-04-01
    • 1970-01-01
    • 2014-02-25
    • 2012-02-09
    • 1970-01-01
    相关资源
    最近更新 更多