您的位置:首页 > 运维架构 > 网站架构

Discuz!NT 系统架构的讨论

2009-09-08 10:16 239 查看

document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
if (text && text.length>300) {
text = text + "\r\n\n本文来自CSDN博客,转载请标明出处:" + location.href;
clipboardData.setData("text", text);
}
}, 100);
}
}
function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}
(一)分析

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版本那样拆分成多个数据库
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: