现在的位置: 首页 > 综合 > 正文

Discuz!NT代码阅读笔记(6)–从全局看看:各个模块功能摘要(2)

2012年05月18日 ⁄ 综合 ⁄ 共 2103字 ⁄ 字号 评论关闭

Discuz!NT代码阅读笔记(1)--从HttpModule开始:首页的显示

Discuz!NT代码阅读笔记(2)--网站安装也能自动化:论坛程序安装及初始化过程

Discuz!NT代码阅读笔记(3)--网站安装也能自动化(2)--DNT安装时使用到的几个函数解析

Discuz!NT代码阅读笔记(4)-- 一切皆可配置:页面的显示

Discuz!NT代码阅读笔记(5)--从全局看看:各个模块功能摘要

  

7Discuz.Config

这个项目主要自定义了一些控件供其它模块使用.有些控件在其它项目中用的很多.模块化设计,似的DNT的各个页面风格统一.还有压根就不知道在哪里用的控件!不知道为什么放到那里.

但有个问题是,这些控件在其它页面显示时,没有设计时支持,都是一串红字,看着很不爽.

(8) Discuz.Data

数据类.相当于DALBLL的说.这个项目中的DataProvider中的CS文件中包含了论坛常用功能的操作。

DbProvider中的CS文件定义了数据访问接口,这些接口在该工程中的DbHelper.cs文件中实现。

DbHelper.cs中封装了ADO.NET的常用操作,像ExecuteNonQuery()执行SQL指令,ExecuteCommandWithSplitter()方法运行含有GO命令的多条SQL命令,ExecuteDataset方法执行指定数据库连接字符串的命令,返回DataSetExecuteReader()数据阅读器方法,方法ExecuteScalar 返回结果集中的第一行第一列,FillDataset()方法填充数据集。

这些方法使用了Config类中提供的方法,自己从配置中读取程序的配置信息。因为配置信息基本不会变化,用户在使用这些方法时不需要再单独提供这些信息。

DbFields.cs非常有意思。它封装了常用数据表的字段。在组织SQL语句时,不必再一个个字段地输入了。程序员都是会偷懒的,呵呵。

9Discuz.Data.SqlServer

提供了管理操作使用的方法。相当于MVC中的C的一部分。暂时无法理解为什么不Discuz.Data和并,而是与单独放在一个项目中。难道这里的操作与数据库类型有关?

10Discuz.Entity

实体工程。相当于MVC中的M。这里定义来论坛和其它功能操作常用的实体描述,与数据库字段对应。其他类使用这些模型,处理和获取想要的信息。

11Discuz.Event

这个项目组定义了一些需要周期性自动处理的计划任务。到期自动触发,而不需要再手动调整。

12Discuz.Forum

程序的另一个BLL。这里定义的方法更贴近实际使用,它主要调用Discuz.Data中提供的方法蓝来处理论坛的操作。

此外还定义来功能型类.比如前面提到的HttpModule等均在此项目中。

13Discuz.Install

论坛安装项目。前面已做介绍。

14Discuz.Mall

论坛商城模块。处理一些商品交易相关功能。

15Discuz.Plugin

DNT附加功能模块。定义了一些接口,实现这些接口后才可在论坛中添加这些功能。

16Discuz.Plugin.Mail.SysMail

仅定义来一个.net邮件发送程序。没有其他功能

17Discuz.Plugin.PasswordMode

定义了第三方密码加密算法。从动网论坛转过来的用户使用。

这个模块基本上就是拉客户用的。。。。

18Discuz.Plugin.Preview.Jpg

生成Jpg图像预览功能。

19Discuz.Plugin.Spread

论坛扩展使用的功能模块。其中自定义了些配置信息。

20Discuz.Space

个人空间模块的UI。包含独立的配置功能、数据访问功能。

21Discuz.Space.Modules

空间模块的管理、配置等功能模块

22Discuz.Space.Modules.Album

个人相册模块

23Discuz.Web

个人认为最牛的模块。论坛的前台UI。强大的不敢看。。。以后会详细读读的。

24Discuz.Web.Admin

DNT后台管理模块。强大程度跟Discuz.Web 相当。

这个项目里边有一个模板生成的功能,很值得参考。
25Discuz.Web.Services

最下边的一个项目了。具体实现了什么功能还没搞明白。

小结一下:DNT官方论坛上看到它基本上是MVC结构,里边的很多做法值得学习参考。

这几天下载了几个其他开源的论坛、博客代码,看看无论从功能上还是从代码的结构上真不如DNT的好。

我最近做的一个东西,就参考了DNT的做法。我在一个不开源的ASP.NET程序中,通过注册HttpModule,添加了一些应用程序级的方法。只要网站启动,我的方法就要周期性地执行。同时,我的代码也优化了不少。以前,碰见访问数据库的时候,就开始定义SqlCommandSqlDataAddapter写连接字符串,现在习惯性地先添加SqlHelper类。方便多了。

DNT引领我学ASP.NET,敬请关注。

Technorati 标签:

抱歉!评论已关闭.