IoC : Inversion of Control , 控制反转,就是创建对象(实例)的权利由开发人员自己控制New转到了由容器来控制。实现了解耦。

DI: Dependency Injection, 依赖注入,就是通过容器来创建对象的时候,在对象初始化时可以给一些属性、构造方法的参数等注入默认值

Aop: 面向切面的编程,相当于MVC里面的过滤器

Unity:   .net平台下的开源项目,用来实现IoC和DI

Spring.net:  开源项目, IoC、DI是此项目的两个重要的特点, 是从java中的spring移植过来的。使用时,需要参考Spring.net 文档

参考

属性设置

代码示例:

http://git.oschina.net/rocky132/sprint.net_ioc_di

http://git.oschina.net/rocky132/heima8_oa

日志并发处理

代码:

1)模拟异常

public ActionResult Test()
        {
            int a = 2;
            int b = 0;
            int c = a / b;
            return Content(c.ToString());
        }

2) 自定义异常过滤器

public class MyExceptionAttribute:HandleErrorAttribute
    {
        public static Queue<Exception> ExceptionQueue = new Queue<Exception>();
        public override void OnException(ExceptionContext filterContext)
        {
            base.OnException(filterContext);
            ExceptionQueue.Enqueue(filterContext.Exception);//将异常信息添加到队列中。
            filterContext.HttpContext.Response.Redirect("/Error.html");
        }
    }

3) 注册过滤器

filters.Add(new MyExceptionAttribute());

4) 设置程序启动后 启动线程循环 从队列中取出异常 写日志

string fileLogPath = Server.MapPath("/Log/");
            //WaitCallback
            ThreadPool.QueueUserWorkItem((a) =>
            {
                while (true)
                {
                    if (MyExceptionAttribute.ExceptionQueue.Count > 0)
                    {
                        Exception ex = MyExceptionAttribute.ExceptionQueue.Dequeue();//出队
                        string fileName = DateTime.Now.ToString("yyyy-MM-dd") + ".txt";
                        File.AppendAllText(fileLogPath + fileName, ex.ToString(), System.Text.Encoding.Default);
                        //ILog logger = LogManager.GetLogger("errorMsg");
                        //logger.Error(ex.ToString());
                    }
                    else
                    {
                        Thread.Sleep(3000);//如果队列中没有数据,休息避免造成CPU的空转.
                    }
                }
            }, fileLogPath);

代码示例:

http://git.oschina.net/rocky132/logwrite_queue

IoC, DI,Spring.net的更多相关文章

  1. 零基础学习java------37---------mybatis的高级映射(单表查询,多表(一对一,一对多)),逆向工程,Spring(IOC,DI,创建对象,AOP)

    一.  mybatis的高级映射 1  单表,字段不一致 resultType输出映射: 要求查询的字段名(数据库中表格的字段)和对应的java类型的属性名一致,数据可以完成封装映射 如果字段和jav ...

  2. 1.Ioc&DI和Spring

    1.面向对象回顾和案例 面向对象程序设计:1 2 3 4 案例分析: 需求分析: 报表功能:     报表服务类,检索数据,并生成图标     报表生成器类,生成不同格式的报表文件,例如PDF格式.H ...

  3. C# IOC DI 学习

    之前一直不理解IOC DI,今天使劲研究了下,感觉朦朦胧胧有点感觉了,网上的这篇文章对我的有很大的启发 http://www.cnblogs.com/jin-yuan/p/3823559.html 我 ...

  4. Spring基础[IOC/DI、AOP]

    一.Spring作用:管理项目中各种业务Bean(service类.Dao类.Action类),实例化类,属性赋值 二.Spring IOC(Inversion of Control )控制反转,也被 ...

  5. spring+IOC+DI+AOP优点分析(一)

    Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于sprin ...

  6. spring 依赖注入(IOC DI)

    依赖注入(IOC DI) 依赖注入的两种方式: 1. set注入 Spring要求使用set注入方式的时候,Bean需要提供一个无参数的构造方法.并提供一个属性的setter方法.例如: packag ...

  7. spring ioc DI 理解

    下面是我从网上找来的一些大牛对spring ioc和DI的理解,希望也能让你对Spring ioc和DI的设计思想有更进一步的认识. 一.分享Iteye的开涛对Ioc的精彩讲解 Ioc—Inversi ...

  8. spring框架--IOC容器,依赖注入

    思考: 1. 对象创建创建能否写死? 2. 对象创建细节 对象数量 action  多个   [维护成员变量] service 一个   [不需要维护公共变量] dao     一个   [不需要维护 ...

  9. Spring+IOC(DI)+AOP概念及优缺点

    Spring pring是一个轻量级的DI和AOP容器框架. 说它轻量级有一大部分原因是相对与EJB的(虽然本人从没有接触过EJB的应用),重要的是,Spring是非侵入式的,基于spring开发的应 ...

随机推荐

  1. JMeter之http接口测试

    能做哪些类型性能测试 接口 文件传输(ftp) 数据库 支持自定义java组件开发 安装 http://jmeter.apache.org/ 进入上面的链接 选择合适版本下载 启动 使用 Jmeter ...

  2. Python开发【笔记】:抓包(实时分隔)

    抓包 进行linux系统抓包,并且定时分隔防止文件太大 #!/usr/bin/env python # -*- coding:utf-8 -*- import os import sys import ...

  3. CentOS 7 下安装jdk1.8(转)

    原文:https://blog.argcv.com/articles/3155.c CentOS 7下目前默认是jdk1.6和1.7.若需要更高版本的1.8,我们就需要一点额外的手段了. 首先,我们需 ...

  4. sublime 指定打开某文件的类型(text/plain)

    看下图,点击open all width ...选取你指定文件,以后打开都是你指定文件类型

  5. 安装MongoDB报错

    尝试多次,最后找到解决方式: 在安装的最后一步的时候不要勾选左下角的compass即可 命令行mongod --version测试安装是否成功

  6. 帝国cms调用相关文章若没有则调取最新文章

    前面我们说了帝国cms调用最新文章 利用文字调用标签phomenews,现在我们说下相关文章的调用,如果文章有设置关键词的话可以直接用[!--other.link--]进行调取,现在我们来升级一下,如 ...

  7. 20171018 在小程序页面去获取用户的OpenID

    1. 在小程序的.js 文件中增加代码 //加载页面时到后台服务去获取openID onLoad: function (options) { //OpenId wx.login({ //获取code ...

  8. Python3学习之路~5.1 模块介绍

    1 定义 模块:用来从逻辑上组织Python代码(变量.函数.类.逻辑:实现一个功能),本质上就是.py结尾的Python文件(文件名:test.py对应的模块名:test). 2 导入方法 impo ...

  9. 前端框架之Vue(10)-全家桶简单使用实例

    vue-router官方文档 vuex官方文档 安装 npm install vue-router --save 使用实例 vue-router初使用(webpack-simple模板) 1.切换到指 ...

  10. select 数字/字符串/count(参数)/sum(数字) from table

    第一种的写法是增加临时列,每行的列值是写在select后的数: --1select 1 from W_EC_PLACESTATION_COLLECT t--2select 2 from W_EC_PL ...