学习DNN一开始就想弄清DNN的框架实在太难。51个项目都不知道从那个开始。项目之间的关系更是复杂。分析每个类的关系和作用也不是很容易,主要是有时弄不懂为什么要这样做。先从数据库入手也不是一个很好的方法。程序过于庞大,数据表也很多。所以我认为要学好DNN,应按以下步骤来进行:
1、用熟DNN,了解DNN都有哪些功能,一边看时一边想要是自己做该用什么方法。特别要记下自己实现不了的功能,在以后看程序中要着重学习,这就是你将从DNN中挖到的宝。
2、看看网上都有哪些可供参考的资源,别人走过的路,没必要重走,这样才能体现出知识共享的优势。
3、所我认为分析代码应从Default.aspx开始,先一点一点的逐句逐句的看下去,对Default.aspx中所用的每一个类,都“转到定义”一下。对每一个变量的值是怎么来的都追根求源,一直追到是从那个表读取的数据。在追根求源的过程中,注释好你已经理解了的(有一些公用类,下次追根求源时还可能遇见它)和你没有理解的(这很可能就是DNN精华的部分,在你对DNN有一点认识后作整体分析时你就能知道他的用处)
4、在对变量进行追根求源时,往往就会遇见如下问题:
Default.aspx.vb中的Dim strTitle As String = PortalSettings.PortalName的这一句,只知道是在站点设置信息类PortalSettings的PortalName属性取的值
'站点名称属性
Public Property PortalName() As String
Get
Return _PortalName
End Get
Set(ByVal Value As String)
_PortalName = Value
End Set
End Property
那么这个类是在什么地方被实例化的呢?要想弄清这个问题,就在_PortalName = Value处设个端点然后再以调试的方式运行。在调试位置的“堆栈帧”中,往前看,原来在是在UrlRewriteModule.vb文件的OnBeginRequest中Dim _portalSettings As PortalSettings = New PortalSettings(TabId, objPortalAliasInfo)的这一句被实例化的。
5、DNN决不简单,想吃透它绝不是一朝一夕的功夫,是一个漫长积累的过程。象我这样看程序,一次只能了解一个点,一步一步追踪下去就是一条线。天长日久的积累下去,就能把一条条的线连成网,在加上自己的理解和深入就能全“面”的了解DNN了。
6、我相信,当全面了解DNN后,无论是对门户网站框架,.net开发,web开发以至于自己整个的编程思想都会有一个飞跃的进步。
目前就这多积累,以后有新的再写。
我的学习思路正确吗?希望广大研究DNN的前辈们指正。
注:DNN要想以调试方式运行,需要将web.cofing中<compilation> 元素中的debug设为true,如:<compilation debug="true" />
另外,在web.cofing中要想加入中文注释而不出错,需要在文件顶部加上<?xml version="1.0" encoding="utf-8" ?>