Discuz!NT 系统架构的讨论

本文分析了Discuz!NT的数据库架构,支持SqlServer和MSAccess,并介绍了其分层设计方式。此外,还讨论了接口设计及表结构方面的问题。

 

(一)分析

DIscuz!NT 支持2种数据源,SqlServer和MSAccess,但其数据库访问层实际上已经支持了 MySQL,只是安装程序还未提供基于 MySQL  的。

 Discuz!NT采用了"页面类 -> 业务类 -> 数据库访问类 -> DbHelper -> 数据库"这样的分层方式。数据库访问类有1个大接口3个大实现。所谓大接口就是 IDataProvider 接口,定义了900 多个方法。3个大类实现了 IDataProvider 方法,用 partial class 的方式共分了7 个文件。这种大粒度的类设计方式本人觉得不利于以后维护。

3个大类分别为 MySql SqlServer Access 对 IDataProvider 的实现,输出3个DLL。在配置文件 DNT.config 里可以设置采用哪个实现。

总体来说分层还是比较严谨清晰的,但也有一些不合理之处:
    1)接口层都集中在一个接口类里面,不便于维护,而且很容易引起重名
    2)所有表结构都放在一个数据库中不是很合理,能否像discuz php版本那样拆分成多个数据库

  

转载于:https://www.cnblogs.com/salough/archive/2009/09/08/Discuz.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值