.net通用底层搭建

.net通用底层搭建

之前写过几篇,有朋友说看不懂,有朋友说写的有点乱,自己看了下,的确是需要很认真的看才能看懂整套思路。

  于是写下了这篇。

1.这个底层,使用的是ado.net,微软企业库

2.实体类对应执行sql语句后数据库返回的结果视图你要获取的列,而实体类与数据访问层基类乃是最重要的一环,用到了反射,缓存,拼接语句,高度封装

下面,先看添加操作

1.十个线程,同时执行,各自插库一万条

2.id从原来的程序里加锁处理改为采取数据库自增id,交给数据库处理,想了很久,觉得未来几年都还是单数据库服务器的,所以,用自增吧

.net通用底层搭建执行前的查询

运行网站,.net通用底层搭建

50多秒,每个线程互相等待,数据库帮我们做了并发处理,最后十万条数据57秒全部执行完毕

.net通用底层搭建

以下是添加操作的代码

1.页面的

  View Code

注释部分是用来更新的,方法体外的是全局变量

2.派生数据访问层

复制代码
 /// <summary>

    /// 日志数据访问层

    /// </summary>

    public class LogManager : BaseDal

    {

        public LogManager() { }



        public LogManager(Type type) : base(type) { }



        /// <summary>

        /// 添加日志

        /// </summary>

        /// <param name="logInfo">日志信息</param>

        public  bool Add(LogInfo logInfo)

        {

            bool result = false;



            Parameters parms=GetParameters(logInfo);

            parms.AddOutParameter("@Identity",DbType.Int32,int.MaxValue);

            int Identity=0;

            Identity = base.ExecuteSql_GetIdentity(parms);



            if (Identity>0)

                {

                    SiteCache.Max(SiteCacheKey.CK_MaxID_ + info_table_name, Identity);

                    result=true;

                }



            return result;

        }

}
复制代码

3.基类,数据访问层基类,这里还是把整个类贴上会更方便看。采取了缓存策略。

  View Code

上面的代码就是十线程同时插库1万条的情况,用了50多秒,也就是执行了十万次add方法

然后,开始看更新记录的情况

更新这里,改为用20线程同时更新吧

.net通用底层搭建

1.页面代码

  View Code

2.派生数据访问层

  View Code

3.数据访问层基类

  View Code

4.更新锁将会改为全局静态对象

复制代码
/// <summary>

    /// 全站锁机制

    /// </summary>

   public static class LockHelper

    {

        #region 表锁,用于高并发更新的时候



       public static object tableLock_SYS_Log = new object();



        #endregion

    }
复制代码

 

大概就是上面说的了......

仍在改善中,不过现在开始要忙起来了......

公司的活很忙,考驾照,私人的事......

如果你有缘看到这篇文章,理解了我的思路,还有更好的建议的话,留下您的贵言!!!

 

 

你可能感兴趣的:(.net)