Portal Starter 源码深入剖析(一)
学ASP.net光看书看来是不行的,找一些经典的源代码来读读,对提升认识是很有帮助的。
在Microsoft的网站上找到几个范例,选择Portal是因为这个范例最大,可作为一个简单的门户站。
Portal的工作流程:
1、读取网站设置文件PortalCfg.xml至context中缓存起来,这个过程由Global.asax中的Application_BeginRequest()事件来完成的。
2、客户访问Portal站,执行Default.aspx,Default.aspx判断客户端是Mobile还是浏览器,如果是后者,引导客户至DesktopDefault.aspx
3、DesktopDefault.aspx完成网站各个栏目的展示以及各个栏目中相应模块的加载。
分析Global.asax中的Application_BeginRequest()事件:
Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
'默认访问主页
Dim tabIndex As Integer = 0
Dim tabId As Integer = 1
' Get TabIndex from querystring
If Not (Request.Params("tabindex") Is Nothing) Then
tabIndex = CInt(Request.Params("tabindex"))
End If
' Get TabID from querystring
If Not (Request.Params("tabid") Is Nothing) Then
tabId = CInt(Request.Params("tabid"))
End If
' Add the PortalSettings object to the context
' PortalSetting在Components/Configuration.vb中定义,其作用是根据传入的tabIndex,tabId加载相应栏目的元素。
' Context用来缓存相应栏目的设置。
Context.Items.Add("PortalSettings", New PortalSettings(tabIndex, tabId))
' Read the configuration info from the XML file or retrieve from Cache
' and add to the context
' Configuration类在Components/Configuration中定义,其作用是操作Portal网站的设置文件PortalCfg.xml文件。
' 同样是将设置文件缓存到Context中,这样网站的任何部分都可