zoukankan      html  css  js  c++  java
  • [原]考试系统——C#反射机制+工厂模式+缓存机制遇到问题

    一、问题及解决

     1、问题      

         考试系统用的是三层,抽象工厂+反射,调试系统的时候出现了这样一个错误:是在使用缓存处抛异常


    并且查看返回的借口的值为null,然后就出现这个错误,接口没有创建成功。

     

    2、代码如下:(缓存+反射)

    /// <summary>   /// 创建QuestionTypesDAL数据层接口。题型实体表     /// </summary>   public static ExamSystemV3.IDAL.IQuestionTypesDAL CreateQuestionTypesDAL()   {     string ClassNamespace = AssemblyPath +".QuestionTypesDAL";    object objType=CreateObject(AssemblyPath,ClassNamespace);    return (ExamSystemV3.IDAL.IQuestionTypesDAL)objType;   }         //使用缓存   private static object CreateObject(string AssemblyPath,string classNamespace)   {       object objType = DataCache.GetCache(classNamespace);//从缓存中读取    if (objType == null)    {     try     {           //反射的创建          objType = Assembly.Load(AssemblyPath).CreateInstance(classNamespace); DataCache.SetCache(classNamespace, objType);// 写入缓存     }     catch//(System.Exception ex)     {      //string str=ex.Message;// 记录错误日志     }    }    return objType;   } 

        在使用这个类的时候总是抛异常,未能加载文件或程序集或它的某一个依赖项。


    3、web.config文件

    从网上搜索了一下,查看自己的web.config文件,

    <!--数据访问层程序集名称 -->     <add key="ExamSystemV3.SQLServerDAL" value="Maticsoft.SQLServerDAL" />     


    4、SQLServerDAL配置如下:



    项目的属性名称要和程序集的名称不一致导致了这个问题。


    修改web.config文件后

    <!--数据访问层程序集名称 -->      <add key="DAL" value="ExamSystemV3.SQLServerDAL" /> 

    运行通过。

     

    二、通过这个问题的学习

    1、什么是缓存?

             缓存(Cache)是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取。比如CPU二级缓存、内存、windows文件读取缓存。缓存是改进网站性能的第一个手段,就像索引是改进数据库性能的第一个手段一样

     

    2、缓存机制的好处?

        缓存存放在服务器端,其目的是提高网站的响应性能,不用每次都到数据库中读取相关数据,缓存机制的重点是在并发工作环境下,当缓存所依赖的数据库记录信息发生变化时要及时将其从服务器内存中清除,以免呈现给用户过时的信息。

     

    3 缓存存在的问题:

        缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据(数据库)中数据一致,则需要在慢速数据(数据库)中对应的数据发生变化的时候,清除缓存中相应的数据(缓存依赖)。

     

    三、总结

        如果每次进入页面都要查询内容,则给服务器带来巨大的压力;如果只有一次访问,以后直接输出内容则提高效率。所以使用缓存机制,可以提高查询效率,降低服务器压力。

            

        项目驱动学习。带着问题去学习的效率和效果更好。在学习理论和实践的时候一定要多问问自己“为什么”,多思考,多总结。


  • 相关阅读:
    Windows 10安装DockerToolBox失败处理方法
    Docker未启动错误:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
    WordPress 后台上传自定义网站Logo
    WordPress 后台添加额外选项字段到常规设置页面
    WordPress后台的文章、分类,媒体,页面,评论,链接等所有信息中显示ID并将ID设置为第一列
    在Vs2012 中使用SQL Server 2012 Express LocalDB打开Sqlserver2012数据库
    Sqlserver中 登录用户只能看到自己拥有权限的库
    Asp.net 恢复页面内用户控件内的控件ClientID
    解决WordPress 页面无法评论的问题
    WordPress 如何搜索文章内容而不搜索页面
  • 原文地址:https://www.cnblogs.com/java20131201/p/3466224.html
Copyright © 2011-2022 走看看