20110610 DiscuzNT代码研究(1)
来源:互联网 发布:ubuntu安装万能五笔 编辑:程序博客网 时间:2024/06/01 07:50
20110610 DiscuzNT代码研究(1)
PDF下载:http://download.csdn.net/source/3357910
1. 源代码下载
http://nt.discuz.net/showtopic-140676.html
2. 用VS2010打开项目
3. 项目结构
4. Discuz.Web
4.1. 文件夹结构
本项目是网站最终的项目,对比网站发布的文件夹
Discuz.web项目文件夹
4.2. 关于Bin文件夹
网站所有需要的dll文件都放在Bin文件夹中,总共27个dll文件,其中Discuz自身有22个,刚好对应解决方案的22个项目(其中Discuz.web是网站项目,不生成dll文件),其他dll文件是另外引用的,在“RefDLL”目录下。
5. 如何研究DiscuzNt
1) 研究Discuz.web网站结构
2) 研究dll文件
6. 关于DiscuzNt的运行过程
6.1. 系统安装
一步一步来
我们先按照http://faq.comsenz.com/viewnews-989配置好网站,第一步就是要安装
这时系统会自动跳转的“Install.aspx”页面
6.2. 我们从安装开始分析
既然我们知道入口了,我们就先从安装开始分析
7. Discuz.Web
7.1. install
7.1.1. index.aspx
7.1.1.1. 代码分析方法
1) 截图
2) 分析类成员(UML)
3) 分析类成员的实现和作用(深入源代码)
7.1.1.2. 截图
7.1.1.3. 分析类
从代码的前段,可以看出index.aspx页面没有相应的cs文件,本页面将在被浏览器请求的时候,自动编译一个继承与Page类的页面出来。
为了好分析,我们假设生成的类为index.aspx类
index.aspx的第一行,置顶了本页面的编译语言为C#
<%@ Page Language="C#"%>
index.aspx的C#代码是在<script runat="server">…</script>体现出来。
7.1.1.4. 分析类成员
我们为_Index_Page类画一个UML图,借助“EnterpriseArchitect”工具,非常不错的一个UML建模工具。
从UML类图中可以看出,index.aspx基本上就是一个Page_Load方法,两个字段,这个方法和字段主要做什么作用呢?
7.1.1.5. 分析类成员实现与作用
7.1.1.5.1. Page_Load
如何来分析Page_Load方法,实际上应该是事件方法,这个主要解决什么问题呢?
为了调试某个方法具体作用,有些时候我们需要在方法中添加一些测试方法
这里,我们添加了一个测试方法“Response.Write(binfolderpath);”,并注释后续的代码,我们的目的是要只要HttpRuntime.BinDirectory返回的是什么样的值,返回结果值如下:
G:/WebServer/DiscuzNt360/source_files/Discuz.Web/bin/
即HttpRuntime.BinDirectory返回的是当前应用程序的 /bin 目录的路径。
7.1.1.6. 知识点
- HttpRuntime.BinDirectory
- ArrayList inexistenceAssemblyList = new ArrayList();
- foreach (string assembly in assemblylist)
- System.IO.File.Exists(binfolderpath + assembly)
- inexistenceAssemblyList.Add(assembly);
- msg += "<li>" + assembly + " 中.</li>";
- binfolderpath.Replace("bin//", "")
- 20110610 DiscuzNT代码研究(1)
- 20110612 DiscuzNT代码研究(3)
- 20110611 DiscuzNT代码研究(2)
- 关于DISCUZNT上GOOGLE ADSENSE代码
- asp.net DiscuzNT登录,退出的代码
- irrlicht引擎示例代码研究(1)
- 编程经验:discuzNT(3.0/3.1)上传头像的问题
- dedecms代码研究(2)
- dedecms代码研究(3)
- dedecms代码研究(4)
- dedecms代码研究(5)
- dedecms代码研究(6)
- hive代码研究--运行原理(1)- 整体框架
- 代码研究
- 系统引导 - MBR引导代码研究(1)
- Linux源码规模(代码行数)研究
- irrlicht引擎示例代码研究(2)
- kfs代码研究(四、LayoutManager分析)
- ps 命令查看进程状态
- 查询优化策略---索引
- BSTEK BPM 流程中间件
- ERP系统2011.6.11更新记录
- 差集运算
- 20110610 DiscuzNT代码研究(1)
- 并发相关
- 写给即将入行的程序员的一封信
- vs2010安装错误?
- 英文locale下使用中文输入法
- MyEclipse8.6 性能优化
- fedora 8 英文locale下安装中文输入法 scim 的相关命令及配置方法
- vi/vim的加解密问题
- Java语言中链表和双向链表