zoukankan      html  css  js  c++  java
  • 为什么要使用Ninject

    模块化

          如果一但你把应用程序分为多个组件或者模块,你必须得组合它们。控制反转可以解决这个问题。这个比搭线式或者依靠一串的XML来描述组件要好的多。(用XML来描述是控制反转一种实现方式,我们的目的是组合组件,控制反转是达成目标的理论,Ninject和XML描述都是属于解决方案。当然还会有很多的解决的手段!!所以希望大家理性思考,选择最适合的,这里不是一篇推荐使用Ninject的文章,仅仅向大家介绍或者说是自我学习的文章,有点啰嗦了~~~)

    2为什么不选择其他的控制反转的工具?

    1  因为大多数其他的框架都是使用XML的方式来通知框架构建应用程序,所以Ninject最少会有下面几个优势:

       第一:配置会非常的繁琐并且经常得提供出装配件(一般来说都是DLL)的Type全名。

                    如:System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35

      第二:    一个小小的错误,你的程序就会出问题。。。 想想看,PublicKeyToken变了后,啥都不会了- -  特别是做一些类似MOSS中插件开发,

    如WebPart经常会出错。好吧,MOSS中使用Ninject会是啥结果,还不清楚。。。。

    解释下轻量级和重量级的区别:

    最最显著的就是:受重量级的框架,会造成需要依赖很多的组件。

    2  Ninject默认的工作方式:

    使用Fluent Interface的方式进行类型绑定,有个更专业的描述:embedded domain-specific language  嵌入式领域语言

    例子:

    我们有一个接口IService和它的实现ServiceImpl,假设我们任何时候请求IService的实例都是ServiceImpl类,那么我们可以这么定义

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

    2   第二种:有个好听的名字,contextual binding,上下文绑定。相对于一些字符串、标识符来说,Ninject可以做到根据不同的环境来给予不同的接口实现。

    Bind<IService>().To<RedImpl>().WhenTargetHas<RedAttribute>();
    Bind<IService>().To<BlueImpl>().WhenTargetHas<BlueAttribute>();
    class ConsumerA 
    {
        public ConsumerA([Red] IService service)
        {
            // The "service" argument will be an instance of RedImpl.
        }
    }
    class ConsumerB
    {
        public ConsumerB([Blue] IService service)
        {
            // The "service" argument will be an instance of BlueImpl.
        }
    }
     
    3  好吧,真的非常的轻量级,核心DLL程序只有100KB。
     
    4  。。。。自己体会吧,支持TDD,当然这个项目使用的是xUnit.net
     
    5  支持很多的平台,SL,Mono,WP,ASP.NET MVC……. 嗯一次学习,其他的项目就会用了,不会出啥问题,学习成本较低 ~~~ 囧  喜欢折腾自己的可以多学习点 ,还是喜欢WOW中地精的话语:时间就是金钱~~~ 好公司加班给钱的哦。。。 虽然还是很悲催~~~
     
  • 相关阅读:
    洛谷 P1886 滑动窗口(单调队列)
    POJ 2559 Largest Rectangle in a Histogram(单调栈)
    eclipse开发velocity实例(初学)
    Spring MVC 教程,快速入门,深入分析
    传智博客(JavaWeb方面的所有知识)听课记录(经典)
    JSP/SERVLET入门教程--Servlet 使用入门
    javaweb入门实例---servlet例子
    Eclipse快捷键大全(转载)
    简单java web应用程序搭建与部署
    Servlet 工作原理解析
  • 原文地址:https://www.cnblogs.com/fengxing/p/2415117.html
Copyright © 2011-2022 走看看