IOC框架Ninject实践总结
2013-09-15 17:38
232 查看
一、控制反转和依赖注入
Ninject是一个轻量级的基于.Net平台的依赖注入(IOC)框架。所谓的IOC,即控制反转(Inversion of Control),它是一个经典的面向对象编程法则,它的作用主要是用来帮助应用程序解耦,并把程序分离成一个个松耦合高内聚的模块。控制反转还有一个名字叫依赖注入(Dependency Injection),简称DI。二、快速无xml配置注入
1、定义应用程序Module
BaseControllerusing System.Web.Mvc; using LogService; using Ninject; using UserService; using UserService.Model; namespace MVCApp.Helper { [ExceptionHandle] public class BaseController : Controller { /// <summary> /// 构造函数 /// </summary> public BaseController() { if (CurrentLogService==null) { using (var kernel = new StandardKernel(new ServiceModule())) { var logger = kernel.Get<ILogService>(); logger.AppendLog("As you see,in constructor log service is not initilized by inject attribute."); } } } protected UserInfo CurrentUser { get { return CurrentUserService.CurrentUser; } } #region 服务 [Inject] public IUserService CurrentUserService { get; set; } [Inject] public ILogService CurrentLogService { get; set; } #endregion } }
然后,在相应的Controller下this点服务属性名调用一下,多么优雅干净简洁。但是这种方式有一点需要特别需要注意,在Controller的构造函数里调用服务初始化一些数据可能不能让你那么随心所欲,因为在构造函数内,服务还没有初始化。
如上代码所示,通过Inject特性实现服务注入,通过继承实现公共服务调用,不管哪种表现形式的应用程序都可以使用,有AOP和继承的世界看上去是多么美好啊。当然了,具体使用哪种方式好每个人肯定都有自己的看法,实际项目中,我们通常选择组合和继承相结合的方式,这样就可以兼顾两者的优点实现注入。
最后还有几个困扰人的问题需要思考:如何划分服务?服务和服务之间是否应该依赖注入?如果仅仅是在表现层实现依赖注入,难道不觉得IOC的作用有点太酱油了吗?
参考:http://www.ninject.org/wiki.html
https://github.com/ninject/
http://ninject.codeplex.com/
/article/5369165.html
http://martinfowler.com/articles/injection.html
相关文章推荐
- (转)IOC框架Ninject实践总结
- IOC框架Ninject实践总结
- IOC框架Ninject实践总结
- IOC框架实践之Ninject
- IOC框架Castle Windsor 微软企业库中的Unity Spring.NET StructureMap Ninject性能比较
- 轻量级IOC框架:Ninject
- 轻量级Ioc框架Ninject简介
- 【推荐系统】互联网商用推荐系统算法实践与框架总结
- 轻量级IOC框架:Ninject
- 轻量级IOC框架:Ninject (上)
- 轻量级IOC框架:Ninject
- 轻量级IOC框架:Ninject (下)
- 【HTML】——总结-实践框架、表单、表格
- 轻量级IOC框架:Ninject
- 轻量级IOC框架:Ninject
- Android 网络请求框架 Retrofit2.0实践使用总结
- AS3 IOC框架Spring Actionscript 的使用总结
- 【转】轻量级IOC框架:Ninject
- IoC框架----实践部分
- 轻量级IOC框架:Ninject