|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
asp是基于web的一种编程技术,可以说是cgi的一种。它可以完成以往cgi程序的所有功能,如计数器、留言簿、公告板、聊天室等等。PortalStarter源码深切分析(一)
学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()事务:
SubApplication_BeginRequest(ByValsenderAsObject,ByValeAsEventArgs)
默许会见主页
DimtabIndexAsInteger=0
DimtabIdAsInteger=1
GetTabIndexfromquerystring
IfNot(Request.Params("tabindex")IsNothing)Then
tabIndex=CInt(Request.Params("tabindex"))
EndIf
GetTabIDfromquerystring
IfNot(Request.Params("tabid")IsNothing)Then
tabId=CInt(Request.Params("tabid"))
EndIf
AddthePortalSettingsobjecttothecontext
PortalSetting在ComponentsConfiguration.vb中界说,其感化是依据传进的tabIndex,tabId加载响应栏目标元素。
Context用来缓存响应栏目标设置。
Context.Items.Add("PortalSettings",NewPortalSettings(tabIndex,tabId))
ReadtheconfigurationinfofromtheXMLfileorretrievefromCache
andaddtothecontext
Configuration类在ComponentsConfiguration中界说,其感化是操纵Portal网站的设置文件PortalCfg.xml文件。
一样是将设置文件缓存到Context中,如许网站的任何部分都能够会见到这些设置。
DimconfigAsConfiguration=NewConfiguration()
Context.Items.Add("SiteSettings",config.GetSiteSettings())
Try
IfNot(Request.UserLanguagesIsNothing)Then
Thread.CurrentThread.CurrentCulture=CultureInfo.CreateSpecificCulture(Request.UserLanguages(0))
DefaulttoEnglishiftherearenouserlanguages
Else
Thread.CurrentThread.CurrentCulture=NewCultureInfo("en-us")
EndIf
Thread.CurrentThread.CurrentUICulture=Thread.CurrentThread.CurrentCulture
CatchexAsException
Thread.CurrentThread.CurrentCulture=NewCultureInfo("en-us")
EndTry
EndSub
剖析NewPortalSettings(tabIndex,tabId),请看上面PortalSettings的机关函数:
PublicClassPortalSettings
PublicPortalIdAsInteger
PublicPortalNameAsString
PublicAlwaysShowEditButtonAsBoolean
PublicDesktopTabsAsNewArrayList()
PublicMobileTabsAsNewArrayList()
PublicActiveTabAsNewTabSettings()
......
PublicSubNew(ByValtabIndexAsInteger,ByValtabIdAsInteger)
Gettheconfigurationdata
DimconfigAsConfiguration=NewConfiguration()
经由过程Configuration类中的GetSiteSettings()将PortalCfg.xml文件导进到Context中,
随后经由过程前往值赋值给siteSettings,siteSettings被界说为一个加强型的Dataset类。
DimsiteSettingsAsSiteConfiguration=config.GetSiteSettings()
ReadtheDesktopTabInformation,andsortbyTabOrder
读取Tab信息,也就是Portal网站的栏目信息,放到DesktopTabs中。
DimtRowAsSiteConfiguration.TabRow
ForEachtRowInsiteSettings.Tab.Select("","TabOrder")
DimtabDetailsAsNewTabStripDetails()
WithtabDetails
.TabId=tRow.TabId
.TabName=tRow.TabName
.TabOrder=tRow.TabOrder
.AuthorizedRoles=tRow.AccessRoles
EndWith
Me.DesktopTabs.Add(tabDetails)
Next
IfthePortalSettings.ActiveTabpropertyissetto0,changeitto
theTabIDofthefirsttabintheDesktopTabscollection
IfMe.ActiveTab.TabId=0Then
Me.ActiveTab.TabId=CType(Me.DesktopTabs(0),TabStripDetails).TabId
EndIf
ReadtheMobileTabInformation,andsortbyTabOrder
DimmRowAsSiteConfiguration.TabRow
ForEachmRowInsiteSettings.Tab.Select("ShowMobile=true","TabOrder")
DimtabDetailsAsNewTabStripDetails()
Withtabdetails
</p>大家可以自己去看一看.可以说看得想呕吐.以前有次下了个动网来看.里面连基本内置函数的保护措施(函数没防御性)都没有.难怪经常补这个补那个了.可能现在.NET版会好点吧 |
|