Discuz!NT代码阅读笔记(1)--从HttpModule开始:首页的显示
Discuz!NT代码阅读笔记(2)--网站安装也能自动化:论坛程序安装及初始化过程
Discuz!NT代码阅读笔记(3)--网站安装也能自动化(2)--DNT安装时使用到的几个函数解析
Discuz!NT代码阅读笔记(4)-- 一切皆可配置:页面的显示
Discuz!NT代码阅读笔记(5)--从全局看看:各个模块功能摘要
(7)Discuz.Config
这个项目主要自定义了一些控件供其它模块使用.有些控件在其它项目中用的很多.模块化设计,似的DNT的各个页面风格统一.还有压根就不知道在哪里用的控件!不知道为什么放到那里.
但有个问题是,这些控件在其它页面显示时,没有设计时支持,都是一串红字,看着很不爽.
(8) Discuz.Data
数据类.相当于DAL和BLL的说.这个项目中的DataProvider中的CS文件中包含了论坛常用功能的操作。
DbProvider中的CS文件定义了数据访问接口,这些接口在该工程中的DbHelper.cs文件中实现。
DbHelper.cs中封装了ADO.NET的常用操作,像ExecuteNonQuery()执行SQL指令,ExecuteCommandWithSplitter()方法运行含有GO命令的多条SQL命令,ExecuteDataset方法执行指定数据库连接字符串的命令,返回DataSet,ExecuteReader()数据阅读器方法,方法ExecuteScalar 返回结果集中的第一行第一列,FillDataset()方法填充数据集。
这些方法使用了Config类中提供的方法,自己从配置中读取程序的配置信息。因为配置信息基本不会变化,用户在使用这些方法时不需要再单独提供这些信息。
DbFields.cs非常有意思。它封装了常用数据表的字段。在组织SQL语句时,不必再一个个字段地输入了。程序员都是会偷懒的,呵呵。
(9)Discuz.Data.SqlServer
提供了管理操作使用的方法。相当于MVC中的C的一部分。暂时无法理解为什么不Discuz.Data和并,而是与单独放在一个项目中。难道这里的操作与数据库类型有关?
(10)Discuz.Entity
实体工程。相当于MVC中的M。这里定义来论坛和其它功能操作常用的实体描述,与数据库字段对应。其他类使用这些模型,处理和获取想要的信息。
(11)Discuz.Event
这个项目组定义了一些需要周期性自动处理的计划任务。到期自动触发,而不需要再手动调整。
(12)Discuz.Forum
程序的另一个BLL。这里定义的方法更贴近实际使用,它主要调用Discuz.Data中提供的方法蓝来处理论坛的操作。
此外还定义来功能型类.比如前面提到的HttpModule等均在此项目中。
(13)Discuz.Install
论坛安装项目。前面已做介绍。
(14)Discuz.Mall
论坛商城模块。处理一些商品交易相关功能。
(15)Discuz.Plugin
DNT附加功能模块。定义了一些接口,实现这些接口后才可在论坛中添加这些功能。
(16)Discuz.Plugin.Mail.SysMail
仅定义来一个.net邮件发送程序。没有其他功能
(17)Discuz.Plugin.PasswordMode
定义了第三方密码加密算法。从动网论坛转过来的用户使用。
这个模块基本上就是拉客户用的。。。。
(18)Discuz.Plugin.Preview.Jpg
生成Jpg图像预览功能。
(19)Discuz.Plugin.Spread
论坛扩展使用的功能模块。其中自定义了些配置信息。
(20)Discuz.Space
个人空间模块的UI。包含独立的配置功能、数据访问功能。
(21)Discuz.Space.Modules
空间模块的管理、配置等功能模块
(22)Discuz.Space.Modules.Album
个人相册模块
(23)Discuz.Web
个人认为最牛的模块。论坛的前台UI。强大的不敢看。。。以后会详细读读的。
(24)Discuz.Web.Admin
DNT后台管理模块。强大程度跟Discuz.Web 相当。
这个项目里边有一个模板生成的功能,很值得参考。
(25)Discuz.Web.Services
最下边的一个项目了。具体实现了什么功能还没搞明白。
小结一下:在DNT官方论坛上看到它基本上是MVC结构,里边的很多做法值得学习参考。
这几天下载了几个其他开源的论坛、博客代码,看看无论从功能上还是从代码的结构上真不如DNT的好。
我最近做的一个东西,就参考了DNT的做法。我在一个不开源的ASP.NET程序中,通过注册HttpModule,添加了一些应用程序级的方法。只要网站启动,我的方法就要周期性地执行。同时,我的代码也优化了不少。以前,碰见访问数据库的时候,就开始定义SqlCommand、SqlDataAddapter写连接字符串,现在习惯性地先添加SqlHelper类。方便多了。
DNT引领我学ASP.NET,敬请关注。