zoukankan      html  css  js  c++  java
  • Ninject IOC<一>

    什么是Ninject

    Ninject是一套.Net平台下的高效,超轻量级的依赖注入库。它可以帮助你实现应用程序的松耦合,高内聚,同时也能很灵活的把它们进行组合在一起。借助与Ninject的帮助,代码的使用,复用,测试和修改变得异常的简单。

    为什么使用Ninject

    既然在.Net平台下依赖注入已经很普遍,同时也已经有了好几个依赖注入库。为什么我们还要另外编写一套呢?

    首先,目前其他框架依赖于XML配置文件,通过配置文件去引导框架的组件的工作,这将带来以下不足:

    1.        配置文件会很长,并且很冗余,因为你必须为每一个类型重复性的去写他得描述信息;

    2.        一个简单的配置错误就会导致整个工程的瘫痪;

    对比而言,Ninject使用一种更方便的接口去生命类型绑定。例如,如果你需要一个Iservice实例,那么会友一个ServiceImpl的实例被返回:

    C#:

     

    Bind<IService>().To<ServiceImpl>();


     

    第二点,其他框架是很庞大的类库,那么意味着库还依赖于其他库,这对于小型的系统而言就会产生“框架膨胀”的问题。

    第三点,Ninject提出了一种异常强大并且灵活的“上下文绑定”技术。类比简单的字符串绑定,Ninject能感知环境,并且能根据不同的运行环境实现不同的接口。例如:

    C#:

     

     1 Bind<IService>().To<RedImpl>().Only(When.Context.Target.HasAttribute<RedAttribute>());
    2
    3 Bind<IService>().To<BlueImpl>().Only(When.Context.Target.HasAttribute<BlueAttribute>());
    4 class ConsumerA {
    5 public ConsumerA([Red] IService service) {
    6 // The "service" argument will be an instance of RedImpl.
    7 }
    8 }
    9 class ConsumerB {
    10 public ConsumerB([Blue] IService service) {
    11 // The "service" argument will be an instance of BlueImpl.
    12 }
    13 }


     

    需要注意的一点:在代码内定义反射,会带来一旦编译完成就不能修改配置。所以这个框架不会代替配置文件。

    最主要的,这还得看个人爱好,如果你喜欢XML文件去定义类型反射,那么你可以使用其他基于XML配置的IOC类库。

    下期请关注:什么是手动注入,Ninject如何注入

  • 相关阅读:
    团队项目冲刺第五天
    团队项目冲刺第四天
    团队项目冲刺第三天
    团队项目冲刺第二天
    团队项目冲刺第一天
    团队任务命题
    java报错the superclass was not found 解决方案
    Buildings 分类: ACM 多校 2015-07-23 22:09
    1009 数字1的数量 分类: 51nod 2015-07-20 21:44 3人阅读 评
    1284 2 3 5 7的倍数 分类: 51nod 2015-07-18 22:06 6人阅读
  • 原文地址:https://www.cnblogs.com/weisteve/p/2293317.html
Copyright © 2011-2022 走看看