Enterprise Library 4.0中的依赖注入容器(Unity)预览

概述

之前我曾发过一篇Enterprise Library 4.0开发计划中提到微软在Enterprise Library 4.0将加入依赖注入容器,暂定名为DIAB,现在微软终于给它起了个正式的名字Unity,难道是“团结”的意思?:),在Unity最终将以两种形式发布:独立的容器组件和作为Enterprise Library 4.0的一部分,用微软的话说“它是一个轻量级的、可扩展的依赖注入容器”,在ASP.NET MVC Framework推出后引起了业界极大的讨论“MS MVC框架漩涡中的MonoRail未来”,不知道Unity推出之后会不会再出现一场“Unity漩涡中的Castle Windsor未来”或者“Unity漩涡中的Spring.Net未来”的讨论。这里先带您提前预览一下Unity。

Unity预览

在Unity中将提供Register方法来注册对象映射,使用Get方法获得对象的实例,基本API如下:

public class UnityContainer : IDisposable
{
    // getting objects
    public T Get(string key) { }

    public IEnumerable GetAll() { }

    // type mapping
    public UnityContainer Register(string key) where TTo : TFrom { }

    // singleton support
    public UnityContainer SetSingleton(string key) { }

    // support for registering existing objects
    public UnityContainer RegisterInstance(T existing, string key, bool overload) { }

    // running existing objects through the container
    public T BuildUp(T existing, string key) { }
}

典型使用

在Unity中,我们可以像如下代码这样加入组件:

UnityContainer container = new UnityContainer()
              .Register()
              .Register();
获取对象实例:
ISomething some = container.Get();

用过Castle的朋友一定还记得,这似乎和Castle中的IOC容器非常像,在Castle的IOC容器中加入组件:

IWindsorContainer container = new WindsorContainer( new XmlInterpreter("http://www.cnblogs.com/BasicUsage.xml") );

container.AddComponent( "txtLog", typeof(ILog), typeof(TextFileLog) );

container.AddComponent( "format", typeof(ILogFormatter), typeof(TextFormatter) );

获取对象实例:

ILog log = (ILog)container["txtLog"];

二者是不是有几分相似呢?不知道Unity会给我们带来哪些惊喜?

结束语

在ASP.NET MVC Framework推出后引起了业界极大的讨论“MS MVC框架漩涡中的MonoRail未来”,不知道Unity推出之后会不会再出现一场“Unity漩涡中的Castle Windsor未来”或者“Unity漩涡中的Spring.Net未来”的讨论。不管怎么说,微软推出Unity,我们又多了一种可供选择的依赖注入容器。
参考:DIAB is now Unity

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12184684/viewspace-531834/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12184684/viewspace-531834/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值