当前位置 > 首页 > 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();
????}

????

  • 在win2003系统上把.net2.0换成4.0碰到的问题

    2011-9-7 16:31:00

    VS2005用了好多年,最近直接换了VS2010,更换后出现问题。 环境我说明一下。 我自己的开发环境是WIN2008,IIS7.0,在安装VS2010时候,自动帮我装上了framewo

  • comet(http 请求长连接) 之 ajax 长查询 简单实现。

    2009-10-10 17:04:00

    摘要: 这几天看到几篇关于http 长连接的文章,之前做过一个简单WebIM 采用ajax定时查询,效率一般,请求一多 iis 日志每天大概有80M左右。在线人数在40人左右(基本和挂QQ一样)。今

  • CLR 4.0 安全模型

    2009-7-24 21:09:00

    在公共语言运行时(CLR)过往的版本中,安全模型一直是最为复杂的模块之一,由于涉及Evidence,CAS策略等机制,难以被用户使用。在Silverlight中,CLR团队提出了三层安全级别,大大简

  • Agent编程平台的实现,你会晕吗?

    2009-9-5 2:17:00

    摘要: 该平台于2005年基于DOTNET V1.1实现,版本号V1.0,本文描述一下实现的方案。目前,我正在升级V2.0,该版本Agent将完全兼容OOP,采用面向上下文编程方法实现。这玩意比较抽

  • How to download the CAT.NET 2.0?

    2011-7-20 16:09:00

    How to download the CAT.NET 2.0?

  • 详解Silverlight Treeview的HierarchicalDataTemplate使用

    2009-12-12 11:02:00

    阅读: 207 评论: 0 作者: jv9 发表于 2009-12-12 07:27 原文链接 在Silverlight项目中,Treeview控件是比较常用的表示层次或者等级的控件,该

  • 应用.Net 扩展方法实现更短的流程控制

    2011-11-3 15:04:00

    最近看Ruby方面的书,里面有些更简单的代码给我们一些思路,是应该使代码更加的简短,同时强化每段代码的含义将会让代码更加易读,其中关于简化流程控制的代码非常吸引人,比如:简单的 5.each{put

  • 调整QT字体大小的一小段代码

    2009-7-10 21:29:00

    在做一些应用的时候,可能会随时动态的改变一些控件的大小(比如QLabel),如果控件里的文字的大小不随之变化的话,就很容易出现太小,或者超出控件的情况发生。 可以使用下面的代码来调整控

  • MVC+JQuery开发B/S系统:②表单绑定

    2009-9-11 19:35:00

    摘要: 标题冠名MVC其实跟MVC没多大关系了。。 目前只是写的前台,请求的都是后台给的Json数据。逻辑比较复杂的Form绑定起来比较麻烦,这些都是要自己写代码。而简单的我们可以写一个通用的进行处

  • [原创]Asp.Net 开发之(1) ---如何自动加载数据到页面或更新数据到数据容器中(基本控件)

    2009-4-4 13:44:00

    摘要: 此文章只代表作者在某一段时间内的看法与观点。 对于一个程序员来说,他们最希望看到了就是如何可以减少他们的工作,也就是说使用最少的code,实现最多的function。在Asp.Net开发