none
我在代码中,设置了一个list容器保存实体类的数据,这个容器应该放三层架构的哪里比较好? RRS feed

  • 问题

  • 我想实现所有操作、修改都保存在内存中,只有用户按保存才实际保存到本地数据库中。

    所以我建了好几个list<实体类>的容器,把数据库的数据都一下去到内存中。

    然后用一个类,取名CacheHandler包含了几个list对象,并且这个类提供了根据ID查找实体,排序之类的方法。

    CacheHandler的list成员都是公开的,所以如果不需要排序之类的,只是删除修改的话,直接对成员或者对象修改就可以了

    CacheHandler还有2个方法,一个是把数据一下从数据库读取到内存中,一个是把内存中数据全部保存到数据库

    所以对CacheHandler的公开list成员修改之后,只要调用方法,就可以全部保存到数据库了。

    -----------------------------------------

    我主要有2个问题。

    第一个是:我想实现类似缓存的效果,我这么设计可以吗?有什么需要修改么?比如公开的list成员改成私有,然后要操作的话全部调用cacheHandler的公开方法,这样做好麻烦,我要提供好多删除,修改之类的方法,我觉得直接把list成员给他们,只要提供1个保存到数据库和1个读取数据库方法就可以了,另外一些排序之类的,只是为了方便才提供的。我这种做法不知道是否叫缓存,我以前没做过,不知道建这种类似缓存的东西有没有例子或者教程可以参考。

    因为我程序已经写到一半了,外形什么,和一些简单的功能都已经出来了,所以这个设计至少完全够我用。但是我第二个问题是我主要想问的。

    第二个问题:这个cacheHandler类应该放在三层架构的哪里比较合适?

    放在通用层,让ui,bll都可以调用到,

    还是放在DAL层,让BLL调用,

    或者放在BLL

    或者新建一个缓存模块。

    我现在是放在DAL层,如果代码比较多,就BLL调用DAL的缓存,然后处理好数据,在给UI,如果代码就几行,我UI直接调用DAL的CacheHandler的公开list成员,修改缓存。

    谢谢哥哥姐姐指点。


    2014年6月5日 0:54

答案

  • 你好:

    根据你的描述,你的数据库并不是太复杂,程序逻辑进行了简单的分层。通过在内存中建立list来临时保存用户操作及数据,也可以说是缓存。因为你的程序相对比较简单,其实通过其它的.net已经提供的集合基本就可以实现你的需求,比如HashTable, Dictionary,在一个简单的程序里面都没有必要实现自己的缓存,增删该查也是比较方便的。

    如果你确定需要自己去实现的话,好像里面更多的是对数据的操作,业务逻辑涉及比较少,如果非要给它一个定位的话,我认为DAL层更适合一点。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月6日 3:15
    版主

全部回复

  • 其实删除的方法以后还是得想办法写到CacheHandler中,因为删除一个数据,得把有些表外键关联他的数据也删除,因为表不多,就5个表,所以我以后需要手动写,删除哪个表,则要把哪个表的数据删除。写5个方法,然后互相套用一下,最顶层的表删除,就一层一层调用下面的方法


    2014年6月5日 0:58
  • 你好:

    根据你的描述,你的数据库并不是太复杂,程序逻辑进行了简单的分层。通过在内存中建立list来临时保存用户操作及数据,也可以说是缓存。因为你的程序相对比较简单,其实通过其它的.net已经提供的集合基本就可以实现你的需求,比如HashTable, Dictionary,在一个简单的程序里面都没有必要实现自己的缓存,增删该查也是比较方便的。

    如果你确定需要自己去实现的话,好像里面更多的是对数据的操作,业务逻辑涉及比较少,如果非要给它一个定位的话,我认为DAL层更适合一点。


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年6月6日 3:15
    版主