Discuz!NT 论坛代码分析
发布:apollo | 发布时间: 2008年10月24日近日在做项目的过程中,分析了几个国内著名的.net系统(风讯、跟Discuz论坛),讲自己的一些研究的心得摘录如下,在方便大家的同时,也给自己的学习留下一些笔记吧,免的以后忘记掉了。
1、风讯的架构:
典型的工厂模式(Factory),这套模式好像近年来在业界很是出名,也引起很多的关注,由于反射的方式也带来一定的性能的损耗。
DALFactory:工厂层,通过反射去获取具体操作数据的代码,重点研究
DbHelper:数据库操作基类,这个大家应该接触的比较多
SqlServer:数据库操作具体代码,这个可以是其他的,比如Access
Bll:业务逻辑层
Model:信息描述层
下面请看部分的核心代码:
Web.Config核心:<add key="WebDAL" value="SQLServerDAL"/>
DALFactory:
private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
public static IAdmin CreateAdmin()
{
string className = path + ".Admin";
return (IAdmin)Assembly.Load(path).CreateInstance(className);
}
public static IAdmin CreateNews()
{
string className = path + ".news";
return (IAdmin)Assembly.Load(path).CreateInstance(className);
}
大家请注意上面的代码,后来我再看了Discuz的代码,发现风讯的这个代码这样去写,简直就是糟套了,操作一个方法要写好几个地方,严重的导致了开发速度下降,当然性能上也糟糕透了,在那个项目做好之后绝对不会在用这样的构架了。
2、Discuz!NT论坛的架构模式(推荐)
主要的几个层,关于Discuz!NT论坛代码的研究,在博客园上很多,也不乏是内部开发人员,他们写的文章很有看头,很多都已经涉及到详细的规划,对于想要更加了解Discuz论坛代码的开发人员,多看看那些文章绝对很有好处的。
Discuz.Entity:信息描述类
Discuz.Data:数据库操作基类,2000多行,兼容任何数据库(不知道可不可以这么说)
Discuz.Data.Access:Access数据库操作的代码
Discuz.Data.SqlServer:SqlServer数据库操作的代码
Discuz.Data.MySql:Mysql数据库操作的代码
在Data中的每个类,都需要在具体代码中予以实现,否则程序会报错的。
- 相关文章:
发表评论
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。





