Discuz!NT数据访问层分析
Discuz!NT数据访问层的架构设计在系统的扩展、可维护性上都进行了考虑,可以根据后期运行过程中的性能需求对数据库进行不同的选择。先来一张数据访问层简单的类图:
通过类图可以看到如果要更换数据库,只需更换实现了IDataProvider和IDbProvider接口的提供程序就行了。
下面是一些描述:
1.接口:
Discuz.Data.IDbProvider:描述数据库提供程序需要实现的方法。
Discuz.Data.IDataProvider:描述数据访问层提供的所有数据操作方法。
2.类:
SqlServerProvider:实现IDbProvider,封装针对特定SQL SERVER数据库的提供程序实现,供Discuz.Data.DbHelper调用。
Discuz.Data.SqlServer.DataProvider:实现IDataProvider接口,封装针对特定SQL SERVER数据库的数据操作实现,供上层调用,在方法实现中需要调用DbHelper进行底层的数据操作。
DatabaseProvider:通过反射创建IDataProvider的实例,方便上层调用。
Discuz.Data.DbHelper:数据库访问助手类,创建数据库提供程序实例,数据库提供程序提供方法去访问数据库。