关于 Discuz!NT 系统架构的讨论

  烈火网(LieHuo.Net)教程 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版本那样拆分成多个数据库

转载请注明:代码家园 » 关于 Discuz!NT 系统架构的讨论

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)