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

最新文章

  1. OpenCASCADE Curve Length Calculation
  2. COGS1752 [BOI2007]摩基亚Mokia(CDQ分治 + 二维前缀和 + 线段树)
  3. IOS NSThread
  4. Tomcat编码问题
  5. [Js]滑动门效果
  6. 一个Web页面的生命周期 ,面试常常被问到
  7. POJ 1847 Tram (最短路)
  8. [Mugeda HTML5技术教程之4] Studio 概述
  9. pip 错误Requested **, but installing version **
  10. Objective-c 中的算术函数和常数的表示
  11. 分布式文件系统FastDFS介绍和配置过程
  12. php下安装动态扩展库的相关事项
  13. js的for循环闭包问题
  14. 前端页面适配的rem换算
  15. SpringBoot 之集成邮件服务.
  16. Palindromic characteristics CodeForces - 835D (区间DP,预处理回文串问题)
  17. vuecli3初尝试(转载)
  18. WAR包方式安装Jenkins
  19. 解决iOS第三方SDK之间重复的symbols问题
  20. 学习笔记之pandas Foundations | DataCamp

热门文章

  1. 洛谷P1315 观光公交 [noip2011D2T3] 贪心
  2. json和jsonp的区别?
  3. 500 G JAVA视频网盘分享(JEECG开源社区)
  4. 创建目录:mkdir
  5. 配置svn用户及权限
  6. 部署 tomcat
  7. Linksys E 刷Tomato shibby
  8. 晨枫U盘启动盘制作工具V4.0-安装原版XP的方法
  9. git branch 命令查看分支、删除远程分支、本地分支
  10. [Shapefile C Library]读写shp图形(C++&amp;.net Wapper)