您的位置:首页 > 产品设计 > UI/UE

DBlue 数据库访问组件(中间件) =欢迎大家拍砖=

2007-07-04 14:41 253 查看
主要功能是完成数据库的操作封装,并管理数据库连接池
DBlue 总设计图:






DBlue0.gif (20.27 KB)

2007-7-4 10:54

ConnManager 主要负责数据库访问对象与池的管理(包括池的初始化启动和对象的生成).主要是起到一个池与对象桥的作用.另外也对外提供给用户(中间件的使用者)设置/ 配置和获得数据库访问对象的一个通道.使用户(也就是使用者)可以不必关心内部对象组成与结构而轻松地管理整个 DBlue 的工作.当然,这此例项目中,我使用了 Door 这个类来让工作变得更简单, Door 的另一个作用(可以说是很重要的作用)是: 让 DBlue 中间件在整个使用过程中唯一(在同一个项目中唯一).这样可以很好的避免用户(也可能是无意中)在不知情的情况下,打开了多个DBlue.而DBlue里 是有池对象的(内存消耗很大).这样的后果是无法想象的.

AccessDB 设计图:






DBlue-AccessDB.gif (8.21 KB)

2007-7-4 10:56

IAccessDB 定义了数据库的功能方法.AccessConstance则保存了数据类型对比表(给数据库对象生成工厂用),其中的filter功能是过滤SQL语句用 的,不过我感觉这个方法放在这里并不是很好(static型).AccessDBfactory主要是功能就是根据传入的参数(和 AccessConstance定义的相比较)来生成不同数据库(MSSQL,OLEDB,ORACLE,PostgreSQL)操作对象.用工厂的目的 是为了更好的扩展性,如果以后要加入另一个数据库访问组件是件很容易的事情(当然要.NET框架下的)

DO 设计图:






DBlue-DO.gif (22.09 KB)

2007-7-4 10:59

这里最关键的是:absAccessDB 这个类,托.NET框架的福,基本上所有以.NET为平台的数据库访问类的功能方法都是一样的(这也是面向接口编程的一大好处).所以在这里,几乎所有数 据库访问实现都由absAccessDB来完成(它可真得是个大功臣呀!~).并且它是实现了我前面定义的IAccessDB 这个接口,而IAccessDB这个接口就是提供给用户的. 在absAccessDB周围的那些继承它的类,只是按不同的数据库类型的区别而分别重写了生成对象的一些小方法(应该是只有二个).所以在新加数据库访问组件中,我们就不需要多写很多代码了.

DBPool 设计图:






DBlue-DBPool.gif (18.29 KB)

2007-7-4 11:02

写ConnPool的时候可真得是要了我的老命了(写的当时是这样的).因为那时用的机器很差.速度暴慢.而且也反工了几次,前几次写得都不是很理想.
它的功能主要是用来管理数据库操作对象集合,并实时对外(使用者)返回当然空闲的数据库操作对象(在数据库操作对象内有其状态:忙碌/空闲/错误 的标识).以做到最大限度地全数据库访问来得顺畅(这是我的想法,不知道实际上是不是这么回事:S)并能沉受一定程度的访问压力,我用java也重写过这 个池对象,并且开了15个线程同时循环不间断地访问数据库(insert/updat/delete/select),4小时左右,没有出问题

PS: 有的时候总感觉这个池在项目中会是个累赘.有点鸡肋的感觉.因为其实一般的连接对象就已经能满足数据访问/操作需要了.而且.NET也自带了数据库池.其实也不管它了,就当作练习吧!~ 呵呵!~

DBlue 0.1.2.4 源代码下载
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: