Asp.net2.0程序设计论文.doc

上传人:文****钱 文档编号:40414 上传时间:2018-05-07 格式:DOC 页数:10 大小:41KB
下载 相关 举报
Asp.net2.0程序设计论文.doc_第1页
第1页 / 共10页
Asp.net2.0程序设计论文.doc_第2页
第2页 / 共10页
Asp.net2.0程序设计论文.doc_第3页
第3页 / 共10页
Asp.net2.0程序设计论文.doc_第4页
第4页 / 共10页
Asp.net2.0程序设计论文.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、ASPNET20程序设计论文班级0804院系计科学号2008215210405姓名ASPNET的前身ASP技术,是在IIS20上首次推出,当时与ADO10一起推出,在IIS30发扬光大,成为服务器端的热门开发工具,微软还特别为它量身打造了VISUALINTERDEV开发工具,在1994年到2000年之间,ASP技术已经成为微软推展WINDOWSNT40平台的关键技术之一,数以万计的ASP网站也是这个时候开始如雨后春笋般的出现在网络上。它的简单以及高度可定制化的能力,也是它能迅速崛起的原因之一。不过ASP的缺点也逐渐的浮现出来意大利面型的程序开发方法,让维护的难度提高很多,尤其是大型的ASP应用

2、程序。直译式的VBSCRIPT或JSCRIPT语言,让效能有些许的受限。延展性因为其基础架构扩充性不足而受限,虽然有COM元件可用,但开发一些特殊功能(像文件上传)时,没有来自内置的支持,需要寻求商开发的元件。1997年时,微软开始针对ASP的缺点(尤其是意大利面型的程序开发方法)准备开始一个新项目来开发,当时ASPNET的主要SCOTTGUTHRIE刚从毕业,他和IIS团队的MARKANDERS经理一起合作两个月,开发出了下一代ASP技术的原型,这个原型在1997年的圣诞节时被发展出来,并给予一个名称XSP,这个原型产品使用的。不过它马上就被纳入当时还在开发中的CLR平台,SCOTTGUTH

3、RIE事后也认为将这个技术移植到当时的CLR平台,确实有很大的风险HUGERISK,但当时的XSP团队却是以CLR开发应用的第一个团队。为了将XSP移植到CLR中,XSP团队将XSP的内核程序全部以C语言重新撰写(在内部的项目代号是“PROJECTCOOL“,但是当时对公开场合是保密的),并且改名为ASP,作为ASP技术的后继者,并且也会提供一个简单的移转方法给ASP开发人员。ASP首次的以及应用在PDC2000中亮相,由BILLGATES主讲KEYNOTE即关键技术的概览,由展示使用COBOL语言撰写ASP应用程序,并且宣布它可以使用VISUALBASICNET、C、PERL与PYTHON语

4、言(后两者由ACTIVESTATE公司开发的互通工具支持)来开发。在2000年第二季时,微软正式推动NET策略,ASP也顺理成章的改名为ASPNET,经过四年的开发,第一个版本的ASPNET在2002年1月5日亮相和NETFRAMEWORK10,SCOTTGUTHRIE也成为ASPNET的产品经理(到现在已经开发了数个微软产品,像ASPNETAJAX和MICROSOFTSILVERLIGHT)。目前最新版本的ASPNET40以及NETFRAMEWORK40已经在VS2010平台内应用。为ASPNET是基于通用语言的编译运行的程序,所以它的强大性和适应性,可以使它运行在WEB开发者的几乎全部的平

5、台上(笔者到现在为止只知道它只能用在WINDOWS2000/2003SERVER/VISTA/7/XP上)。通用语言的基本库,消息机制,数据接口的处理都能无缝的整合到ASPNET的WEB应用中。ASPNET同时也是LANGUAGEINDEPENDENT(语言独立化)的,所以,你可以选择一种最适合你的语言来编写你的程序,或者把你的程序用很多种语言来写,现在已经支持的有C(C和JAVA的结合体),VB,JSCRIPT,C、F。将来,这样的多种程序语言协同工作的能力保护您现在的基于COM开发的程序,能够完整的移植向ASPNET。ASPNET一般分为两种开发语言,和C,C相对比较常用,因为是NET独有

6、的语言,VBNET则为以前VB程序设计,适合于以前VB程序员,如果新接触NET,没有其他开发语言经验,建议直接学习C即可。ASPNET使用一种字符基础的,分级的配置系统,虚拟服务器环境和应用程序的设置更加简单。因为配置信息都保存在简单文本中,新的设置有可能都不需要启动本地的工具就可以实现。这种被称为“ZEROLOCALADMINISTRATION“的哲学观念使ASPNET的基于应用的开发更加具体和快捷。一个ASPNET的应用程序在一台服务器系统的安装只需要简单的拷贝一些必须的文件,不需要系统的重新启动,一切就是这么简单。多处理器环境的可靠性ASPNET已经被刻意设计成为一种可以用于多处理器的开

7、发工具,它在多处理器的环境下用特殊的无缝连接技术,将很大的提高运行速度。即使你现在的ASPNET应用软件是为一个处理器开发的,将来多处理器运行时不需要任何改变都能提高他们的效能,但现在的ASP却做不到这一点。自定义性和可扩展性ASPNET设计时考虑了让网站开发人员可以在自己的代码中自己定义“PLUGIN“的模块。这与原来的包含关系不同,ASPNET可以加入自己定义的任何组件。网站程序的开发从来没有这么简单过。安全性基于WINDOWS认证技术和每应用程序配置,你可以确保你的原程序是绝对安全的。ASPNET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好

8、的应用程序,并提供更好的安全保护。可以通过在现有ASP应用程序中逐渐添加ASPNET功能,随时增强ASP应用程序的功能。ASPNET是一个已编译的、基于NET的环境,把基于通用语言的程序在服务器上运行。将程序在服务器端首次运行时进行编译,比ASP即时解释程序速度上要快很多而且是可以用任何与NET兼容的语言(包括、C和JSCRIPTNET)创作应用程序。另外,任何ASPNET应用程序都可以使用整个NETFRAMEWORK。开发人员可以方便地获得这些技术的优点,其中包括托管的环境、类型安全、继承等等。ASPNET可以无缝地与WYSIWYGHTML和其他编程工具(包括一起工作。这不仅使得WEB开发更

9、加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到WEB页的GUI和完全集成的调试支持。当创建ASPNET应用程序时,开发人员可以使用WEB或XMLWEBSERVICES,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义如果你从来没有开发过网站程序,那么这不适合你,你应该至少掌握一些HTML语言和简单的WEB开发术语不过我相信如果有兴趣的话是可以很快的掌握的。你不需要先前的ASP开发经验(当然有经验更好),但是你必须了解交互式WEB程序开发的概念,包含窗体,和数据

10、接口的概念,如果你具备了这些条件的话,那么你就可以在ASPNET的世界开始展翅高飞了。当装载HOSTINGASPNET的WEB服务器接收到HTTP要求时,HTTP聆听程序HTTPLISTENER会将要求转交给URL指定的网站应用程序的工作流程WORKERPROCESS,ASPNET的工作流程处理器ASPNET_ISAPIDLL,若是IIS50时则是ASPNET_WPEXE会解析URL,并激活位于SYSTEMWEBHOSTING命名空间中的ISAPIRUNTIME(视版本)对象,接收HTTP要求,并调用HTTPRUNTIME,运行HTTPRUNTIMEPROCESSREQUEST,在PROCES

11、SREQUEST中使用HTTPAPPLICATIONFACTORY建立新的HTTPAPPLICATION或是指定的IHTTPHANDLER处理器,再分派给PAGE中的PROCESSREQUEST或是IHTTPHANDLER的PROCESSREQUEST方法,运行之后,再传回到ISAPIRUNTIME,以及ASPNET_ISAPIDLL,最后交由HTTPLISTENER回传给用户端,因为运行程序有如管线般顺畅的运行,因此称为HTTPPIPELINEMODE。在ASPNET内部的HTTP处理器有ISAPIRUNTIME由ASPNET_ISAPIDLL调用,初始化HTTPWORKERREQUEST对

12、象(会由IIS的版本决定要初始化的版本)。HTTPRUNTIME提供要求队列REQUESTQUEUE、调用HTTPWORKERREQUEST中的PROCESSREQUEST方法,以及后续的处理工作。HTTPWORKERREQUEST产生HTTPAPPLICATION、HTTPREQUEST、HTTPRESPONSE等基础对象的HTTP要求对象,并将要求转送到要处理的对象(并调用它的PROCESSREQUEST方法)。IHTTPHANDLER与IHTTPASYNCHANDLER负责处理HTTP要求的单元,由PROCESSREQUEST来分派与运行要求。ASPNET网页中的事件程序当HTTPWOR

13、KERREQUEST调用ASPNET网页SYSTEMWEBUI命名空间的PAGE类的PAGEPROCESSREQUEST方法时,它会依序的引发PAGE内的各个事件,并同时调用在PAGE中所有控件的相关事件,其引发顺序为PREINIT事件运行预先初始化的工作,在ASPNET20中,若要动态调整主版页面MASTERPAGE、布景主题THEME时,要在这个事件中调整。INIT事件运行初始化工作。INITCOMPLETED事件在完成初始化工作后引发。PRELOAD事件运行预先加载的工作。LOAD事件运行加载的工作,大多数的网页都拥有PAGE_LOAD事件处理程序,用户控件USERCONTROL中也有P

14、AGE_LOAD事件例程,都会在此时调用。控件的POSTBACK变更通知当网页侦测到是POSTBACK要求时,会引发POSTBACK消息通知的事件。控件的POSTBACK相关事件当网页侦测到是POSTBACK要求时,会引发POSTBACK消息指定的控件的事件。LOADCOMPLETED事件运行加载完成后的工作。PRERENDER事件处理在产生HTML结果前的工作。SAVESTATECOMPLETED事件处理页面状态VIEWSTATE与CONTROLSTATE储存完成后的事件。RENDER事件处理产生HTML的工作。UNLOAD事件处理退出网页处理时的工作。如果HTTPWORKERREQUEST

15、调用的是实现IHTTPHANDLER界面的HTTP处理程序时,它只会调用IHTTPHANDLERPROCESSREQUEST方法,由它来处理程序的输出,不像PAGEPROCESSREQUEST会处理事件顺序,因此HTTPHANDLER很适合轻量级的数据处理,像是输出文件数据流或是图片数据流等。ASPNET的原始设计构想,就是要让开发人员能够像VB开发工具那样,可以使用式程序开发模式EVENTDRIVENPROGRAMMINGMODEL的方法来开发网页与应用程序,若要以ASP技术来做到这件事的话,用必须要使用大量的,像是查询字符串或是窗体字段数据来识别与判断对象的来源、事件流向以及调用的函数等等

16、,需要撰写的代码量相当的多,但ASPNET很巧妙利用窗体字段和JAVASCRIPT脚本把事件的传递模型隐藏起来了。ASPNET的事件模型是由以及数个HIDDENFIELD组合而成,基于HTTP模型的限制,所有的网页程序在运行结果输出到用户端后,程序就会退出运行,为了维护在ASPNET网页与控件的状态数据,因此在输出ASPNET控件时,ASPNET会将部份状态数据储存到网页的HIDDENFIELD中,这类型的状态数据称为VIEWSTATE(ID为_VIEWSTATE),在服务器端即会被解译出状态与事件数据。在大多数的内置WEB控件中都有使用到这个机制,因此在使用大量ASPNETWEB控件的网页中

17、,会有许多的VIEWSTATE会存放在网页中并随着HTTP数据流输出到用户端,VIEWSTATE在输出时,会被加密为一组字符串,其金钥值定义在计算机中,并且每一个对象都会被序列化SERIALIZE成字符串(因此若是自定义对象要放到VIEWSTATE时,则应要让它支持序列化),再输出到_VIEWSTATE字段中,在每次的网页来回时都会被传输,较大的VIEWSTATE会让网页大小膨胀,不利于快速的,不过ASPNET本身有提供将VIEWSTATE关闭的功能,因此如果控件不需要状态保存时,可将它关闭以减少输出的大小。为确保控件的事件能够确实被引发,让事件驱动能够被运行,因此控件事件引发命令时需要的参数

18、,是交由JAVASCRIPT脚本在用户端引发时,填入另一个HIDDENFIELD(ID为_EVENTTARGET以及_EVENTARGUMENT),并且引发窗体的送出指示SUBMIT,传送到服务端后,服务端的HTTPAPPLICATION中的工具函数会解析_EVENTTARGET和_EVENTARGUMENT字段中的信息,并且交由控件所实现的RAISEPOSTBACKEVENT来引发事件,并由NETFRAMEWORK内部的事件处理器制接手处理(调用控件设置的事件处理程序)。在ASPNET运行的时候,经常会有网页的来回动作ROUNDTRIP,在ASPNET中称为POSTBACK,在传统的ASP技

19、术上,判断网页的来回是需要由开发人员自行撰写,到了ASPNET时,开发人员可以用PAGEISPOSTBACK机能来判断是否为第一次运行当ASPNET发现HTTPPOST要求的数据是空值时,它可以保证ASPNET的控件事件只会运行一次,但是它有个缺点(基于HTTPPOST本身的缺陷),就是若用户使用浏览器的刷新功能按F5或刷新的按钮刷新网页时,最后一次运行的事件会再被运行一次,若要避免这个状况,必须要强迫浏览器清空高速缓存才可以。ASPNET20中有新增三个来回模式CROSSPAGEPOSTBACK允许跨不同的网页运行POSTBACK,服务端可使用PAGEISCROSSPOSTBACK来判断是否

20、是跨网页型的来回。ASYNCPAGEMODE允许网页使用异步的方式运行,服务端可用PAGEISASYNC来判断。CALLBACKASPNET20新增的由网页回呼用户端指令的功能,服务端可用PAGEISCALLBACK来判断是否要求是来自CALLBACK。来回模式不仅是ASPNET运作时的内核,它也是ASPNET应用程序的一个主要缺点,尤其是在设计复杂度高的页面时,在网页中隐藏的VIEWSTATE的大小会相当大,而在每次的来回动作中,都会传送VIEWSTATE在内的窗体信息,大量的VIEWSTATE会使得传送的时间拉长,而且每次来回动作都会让整个网页被刷新,而出现闪烁的情况(就算在本地端也一样)

21、,但在AJAX技术尚未成熟时,只能够忍受这种因底层限制所带来的问题,在ASPNETAJAX技术发展出来后,通过UPDATEPANEL成功的缓解了这个问题(但VIEWSTATE传送的问题仍然未根本的解决,必须要使用像PAGEMETHOD这样的方式才能彻底的解决)。熟悉ASP技术的人都知道,代码都是混在HTML标签之间,以输出预期需要的HTML指令,这个技术在ASPNET中,由各控件的绘制RENDER机制包装起来了,绘制机制装载了HTMLTEXTWRITER对象,由它来产生HTML指令,它会输出至HTTPCONTEXT的RESPONSE输出数状态管理STATEMANAGEMENT在WEB应用程序中

22、,一向是很重要的课题,良好的状态管理可以帮助开发人员发展出具有状态持续能力的应用程序(像是工作流程型应用程序或是电子商务应用程序),但状态管理功能会视应用程序的部署状态以及信息的共用程度来选择,在ASPNET中,分为服务器端状态管理以及用户端状态管理,用户端状态管理为VIEWSTATE以及COOKIES,服务端状态管理则是SESSION与APPLICATION对象。它们的差异点在于VIEWSTATE是加密的数据流,和HTML一起输出到用户端。COOKIES是加密(也可不加密)的小型数据,和HTML不同,它可以高速缓存在用户端浏览器中。SESSION是服务器端的状态保存机制,每个用户端均有独立的

23、空间(以浏览器运行个体来赋与唯一的SESSIONID值)。APPLICATION是服务器端的状态保存机制,但应用程序所有的用户端共用同一份状态数据。据流中即ASP技术的RESPONSEWRITE。APPLICATION对象会在应用程序的APPLICATION_ONSTART事件中初始化,并使用名称来识别数据(它是一个NAMEOBJECTCOLLECTIONBASE集合的实现品),它会储存在应用程序的范围内,所有的连接(用户)都可以使用,属于共用型的储存体,适合储存所有用户都可使用的数据,在多人使用的情况下,可以适当的使用LOCK/UNLOCK的机制来确保应用程序状态的更新。APPLICATIO

24、NLOCKAPPLICATION“PAGEREQUESTCOUNT“INTAPPLICATION“PAGEREQUESTCOUNT“1APPLICATIONUNLOCK行个体第一次连到应用程序时,ASPNET会设置一个SESSIONID,并且使用它来识别SESSION,每一个SESSION都是ICOLLECTION与IENUMERATE的实现,用KEY来识别数据值,并且具有时间的限制TIMEOUT,若超出时限时服务器会自动清理掉,默认的SESSION时限为20分钟。SESSIONID的算法是由RNGCRYPTOSERVICEPROVIDER(密码编译乱数产生器提供者)产生,并编码成一个SESS

25、IONID字符串(例如ANF4VUUP3XIQ0ARJLQLA2L55这样的字符串)储存在服务器中,用以识别不同的SESSION个体。为因应不同的用户端,ASPNET设计了不同的SESSIONID存放机制,像是旧式的浏览器或是行动用户端这种不支持本地储存COOKIE的设备时,ASPNET可以直接在URL中加上SESSIONID的识别,像是HTTP/WWWACMECOMTW/ANF4VUUP3XIQ0ARJLQLA2L55/PROFILEASPX这样的URL,可以由开发人员自行设置,或是使用AUTODETECT设置来让ASPNET自行判断要使用的SESSIONID存放方式。SESSIONID的产

26、生方法可以由程序开发人员自定义,借由改写SESSIONIDMANAGER的CREATESESSIONID方法来自定义。USINGSYSTEMUSINGSYSTEMCONFIGURATIONUSINGSYSTEMWEBCONFIGURATIONUSINGSYSTEMWEBUSINGSYSTEMWEBSESSIONSTATENAMESPACESAMPLESASPNETSESSIONPUBLICCLASSGUIDSESSIONIDMANAGERSESSIONIDMANAGERPUBLICOVERRIDESTRINGCREATESESSIONIDHTTPCONTEXTCONTEXTRETURNGUID

27、NEWGUIDTOSTRINGPUBLICOVERRIDEBOOLVALIDATESTRINGIDTRYGUIDTESTGUIDNEWGUIDIDIFIDTESTGUIDTOSTRINGRETURNTRUECATCHRETURNFALSE状态管理在单一服务器上,可以储存在服务器的存储器中,但若是在大型网站中,使用许多的WEB服务器来实行负载平衡LOADBALANCING处理时,会有状态储存在哪个位置的问题,因此需要有一个可以在每个WEB服务器之间做状态储存的媒介,像是独立的服务器或是数据库等等。在ASPNET中支持了四种状态储存的媒介INPROC储存与ASPNET相同的运行进程中INPROCE

28、DURESTATE,适合单一服务器的状态储存。STATESERVER储存在ASPNET状态服务器STATESERVER中,适合跨服务器的状态储存,但因为它使用的通讯端口,因此在使用上需要注意的问题。SQLSERVER储存在独立的SQLSERVER数据库中,适合跨服务器的状态储存。CUSTOM以自行实现的状态提供者STATEPROVIDER。ASPNET最基础的底层为网页PAGE,网页由SYSTEMWEBUIPAGE类来提供基础支持,包含了页面的事件以及对象绘制的引发点(PAGE类本身是一个HTTPHANDLER的实现品)。ASPNET网页在微软的官方名称中,称为WEBFORM,除了是要和WIN

29、DOWSFORMS作分别以外,同时也明白的刻划出了它的主要功能“让开发人员能够像开发WINDOWSFORMS一样的方法来发展WEB网页”。因此ASPNETPAGE所要提供的功能就需要类似WINDOWSFORMS的窗体,每个WEBFORM都要有一个区块,所有的ASPNET服务器控件都要放在这个区域中,这样才可以让VIEWSTATE等服务器控制能够顺畅的运作。使用代码后置模式的设置时,可以让ASPNET运行引擎在加载网页时,由代码后置参数取得对应的类信息,藉以使用REFLECTION的方式来运行后置的代码。ASPNET可以支持HTML和XHTML两种网页内容,但在VISUALSTUDIONET中,

30、默认是使用HTML,但在VISUALSTUDIO2005以后的版本,则一律都改用XHTML格式。ASPNET的内置控件分为两种HTML控件HTMLCONTROL直接在HTML标记中加上RUNAT“SERVER“,即可对应到ASPNET指定的HTML服务器控件类,像是HTMLANCHOR表示HTML的WEB控件WEBCONTROL由ASPNET提供,比HTML控件提供更多的功能,但操作与设置会比HTML控件要复杂许多,像是LINKBUTTON一种外型为链接HTMLBUTTON表示HTML的。HTMLIMAGE表示HTML的。HTMLGENERICCONTROL表示没有对应到服务器控件的对象,都会

31、被对应到这个类。WEB控件WEBCONTROL由ASPNET提供,比HTML控件提供更多的功能,但操作与设置会比HTML控件要复杂许多,像是LINKBUTTON一种外型为链接除了内置的控件之外,ASPNET也提供了可以自定义的控件架构,并且支持两种控件开发方法用户控件USERCONTROL,以ASCX为扩展名,可以让开发人员用最轻松的方式来开发控件,优点是开发速度很快,但缺点是无法转散布,且无法加入参考。自定义控件CUSTOMCONTROL,可转散布型的控件,是经过编译后的代码DLL,可单独转散布,并且可在其他的项目加入参考引用,自定义控件有三种开发模式基础控件GENERALCONTROL由S

32、YSTEMWEBUICONTROL类继承而来,或是由现有的WEB控件继承而来,像是由BUTTON控件继承。复合控件COMPOSITECONTROL由SYSTEMWEBUIWEBCONTROLSCOMPOSITECONTROL继承而来,可以用复合的方式来开发控件。样板控件TEMPLATECONTROL可以在控件中使用样板TEMPLATE,并套用数据到样板中,支持数据绑定的表达式。以往在ASP中常被使用的五大基本对象,在ASPNET中仍然持续被支持,但它们都换了一个身份来提供APPLICATION包装了HTTPAPPLICATION对象,在程序中使用APPLICATION指令取得的对象,都是来自于

33、HTTPCONTEXTCURRENTAPPLICATION属性回传而得。REQUEST包装了HTTPREQUEST对象,在程序中使用REQUEST指令取得的对象,都是来自于HTTPCONTEXTCURRENTREQUEST属性回传而得。RESPONSE包装了HTTPRESPONSE对象,在程序中使用RESPONSE指令取得的对象,都是来自于HTTPCONTEXTCURRENTRESPONSE属性回传而得。SESSION包装了HTTPSESSIONSTATE对象,在程序中使用SESSION指令取得的对象,都是来自于HTTPCONTEXTCURRENTSESSION属性回传而得。SERVER包装了

34、HTTPSERVERUTILITY对象,在程序中使用SERVER指令取得的对象,都是来自于HTTPCONTEXTCURRENTSERVER属性回传而得。应用程序服务APPLICATIONSERVICES是在ASPNET20中才开始提供,它以PROVIDERBASEDPATTERN为主,实现出数个网站的常用服务,包含会员服务MEMBERSHIPSERVICE、角色服务ROLESERVICE与设置档服务PROFILESERVICE等。会员服务由MEMBERSHIP以及其数据提供者MEMBERSHIPPROVIDER构成,应用程序使用MEMBERSHIP所显露的方法来操作,它会将要求转送给指定的ME

35、MBERSHIPPROVIDER实现来处理,ASPNET目前支持来自于数据库的SQLMEMBERSHIPPROVIDER支持SQLSERVER以及来自于活动目录的ACTIVEDIRECTORYMEMBERSHIPPROVIDER,开发人员也可以自行由MEMBERSHIPPROVIDER继承来实现自定义的会员服务数据提供者。角色服务与会员服务类似,由ROLE以及其数据提供者ROLEPROVIDER构成,应用程序使用ROLE所显露的方法操作,由ROLEPROVIDER实现提供数据服务,目前内置的ROLEPROVIDER有来自活动目录或XML文件的AUTHORIZATIONSTOREROLEPROV

36、IDER,由SQLSERVER供应数据的SQLROLEPROVIDER,以及支持WINDOWS角色的WINDOWSTOKENROLEPROVIDER三种,开发人员可自行实现ROLEPROVIDER的方法以发展出自定义的角色服务提供者。设置档服务是一个特殊的服务,它结合了NETFRAMEWORK的CODEDOM开发模式,以及SYSTEMWEBPROFILE命名空间的PROFILEBASE、PROFILEINFO与PROFILEMANAGER等类,组合出完整的设置档支持,其数据来源也是以PROVIDERBASEDPATTERN为主,由PROFILEPROVIDER提供,ASPNET内置由SQLSE

37、RVER数据库建立的SQLPROFILEPROVIDER,其字段系由开发人员在ASPNET组态档中自行定义,再由ASPNET动态产生强型别的字段属性。设置档服务也是作为ASPNET20的WEBPARTFRAMEWORK所需要的设置档储存支持,WEBPARTFRAMEWORK可以让开发人员可以开发出具备个人化能力PERSONALIZATION的网页配置方案,让用户可以用自行新增与拖放的方式来设计自己的网页布置,所需要的设置储存即由设置档服务处理。另一个需要和应用程序服务配合使用的功能为WEB事件架构WEBEVENTFRAMEWORK,它需要由应用程序服务提供,它也有PROVIDERBASEDPA

38、TTERN,并可以支持数种的事件数据提供者。ASPNET在1X时,使用的是组件为主的编译方式,一个网页只会产生一个组件,这个方式最大的优点,就是可以自由定义命名空间,且在部署应用程序时会比较方便,但由于ASPNET1X所处的时代,如果网站是有许多代码的情况下(即DLL档很大),加载的速度会变慢,且占用存储器的量会很多,当时的存储器价格也尚未降到现在的水平。因此在ASPNET20开始,另外提供了一个预先编译PRECOMPILATION的编译模型,这个编译方法会将每个网页都各自编译成一个组件,其文件名称会是APP_乱数字符串DLL命名,在编译时期由ASPNETPRECOMPILATION工具ASPNET_COMPILEREXE给定,优点是可以不必加载过量的代码到存储器中,但缺点则是无法自定义命名空间,而且在更新时必须要更新所有的DLL档以及网页等,否则会造成名称不一致,让DLL无法被加载的问题。早期ASPNET20仅提供预先编译模式,让它的缺点很快的被暴露出来,因此微软也为ASPNET20开发了沿用ASPNET1X的编译模型的工具WEBAPPLICATIONPROJECT,在VISUALSTUDIO2008中开始内置,至此,ASPNET支持两种编译模式的架构抵定。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。