当前位置 > 首页 > Asp.net

两会系列之Ioc容器(2)-- asp.net mvc中整合autofac

2012-11-28 14:02:00来源:Asp.net

经过上篇蜻蜓点水的介绍后,本篇通过实例快速上手autofac,展示当asp.net mvc引入了autofac之后会带来什么。

创建Asp.net MVC并引入Autofac

首先,创建一个MVC站点,为方便起见,选初始带HomeControllerAccountController的那种。然后通过NuGet或到Autofac官网下载来引入类库。个人推荐前者,因为从VS2010开始,已内集可视化的NuGet功能,使用起来非常方便。如下图所示:

image

这是vs2012的界面,点击“Manage NuGet Packages…”,弹出窗体如下,在右上角搜索框中输入“Autofac”,找到对应的库点击安装即可。这里需要应用的库有两个“Autofac”和“Autofac ASP.Net MVC3 Integration”。

image

在MVC入口处整合autofac

在MVC中,Controller通常不含复杂的逻辑以便于扩展和维护,用户验证,数据库存取,及上篇所说的日志记录等功能都会抽象并独立出来。当Controller需要这些功能时,内含对应的抽象即可。

比如,现在HomeController需要用到日志记录功能。沿用上篇ILog接口,假设目前已有一种ILog的实现类--TxtLog,放在根目录下Services文件夹中。

public class TxtLog:ILog
{
????public void Save(string message)
????{
????????//save as txt
????}
}

HomeController需添加一个ILog类型变量,为了直观看到类名,我把_log的类名赋给ViewBag.LogTypeName并显示出来。代码如下:

public class HomeController : Controller
{
????private ILog _log;
????
????public HomeController(ILog log)
????{
????????_log = log;
????}

????public ActionResult Index()
????{
????????ViewBag.Message = "Welcome to ASP.NET MVC!";
????????ViewBag.LogTypeName = _log.GetType().Name;
???????
????????return View();
????}

????