仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 458|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页设计ASP.Net Web Page深切切磋

[复制链接]
跳转到指定楼层
楼主
发表于 2015-1-16 22:47:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。asp.net|web1、服务器剧本基本先容
起首,我们先温习一下Web服务器页面的基础实行体例:

1、客户端经由过程在扫瞄器的地点栏敲上天址来发送哀求到服务器端

2、服务器吸收到哀求以后,发给响应的服务器端页面(也就是剧本)来实行,剧本发生客户真个呼应,发送回客户端

3、客户端扫瞄器吸收到服务器传回的呼应,对Html举行剖析,将图形化的网页出现在用户眼前


关于服务器和客户真个交互,一般经由过程上面几种次要体例:

1、Form:这是最次要的体例,尺度化的控件来猎取用户的输出,Form的提交将数据发送给服务器端处置

2、QueryString:经由过程在Url前面带参数到达将参数传送给服务器,这类体例实在跟Get体例的Form是一样的

3、Cookies:这是一种对照特别的体例,一般用于用户身份切实其实认


2、ASP.Net简介

传统的服务器剧本言语,如ASP、JSP等,编写服务器剧本的体例迥然不同,都是在Html中嵌进注释或编译实行的代码,由服务器平台实行这些代码来天生Html;关于这相似的剧本,页面的保存周期实践上很复杂,就是从开首至开端,实行完一切的代码,固然用Java编写的Servlet能够编写更庞大的代码,可是从布局上看,和JSP没甚么区分。

ASP.Net的呈现,冲破了这类传统;ASP.Net接纳了CodeBehind手艺和服务器端控件,到场了服务器真个事务的观点,改动了剧本言语编写的形式,加倍切近Window编程,使Web编程加倍复杂、直不雅;可是我们要看到,ASP.Net自己并没有改动Web编程的基础形式,只是封装了一些细节、供应了一些易用的功效,使代码更简单编写和保护;从某种水平下去说,将服务器端实行的体例庞大化了,这就是我们明天要会商的主体:ASP.NetWebPage的保存周期。


3、ASP.Net哀求处置形式

我们说,ASP.Net的WebPage并没有离开Web编程的形式,以是它仍旧是以哀求->吸收哀求->处置哀求->发送呼应如许的形式在事情,每次与客户真个交互城市激发一次新的哀求,以是一个WebPage的性命周期是以一次哀求为基本的。

当IIS收到客户真个哀求的时分,会将哀求交给aspnet_wp这个历程来处置,这个历程会检察哀求的使用程序域是不是存在,假如不存在则会创立一个,然后会创立一个Http运转时(HttpRuntime)来处置哀求,这个运转时“为以后使用程序供应一组ASP.NET运转时服务”(摘自MSDN)。

HttpRuntime在处置哀求的时分,会保护一系列的使用程序实例,也就是使用程序的Global类(global.asax)的实例,这些实例在没有哀求的时分,会寄存在一个使用程序池中(实践上使用程序池由另外一个类来保护,HttpRuntime只是复杂的挪用),每吸收到一个哀求,HttpRuntime城市猎取一个闲置的实例来处置哀求,这个实例在哀求停止前不会处置其他的哀求,处置终了以后,它又会回到池中,“一个实例在其保存期内被用于处置多个哀求,但它一次只能处置一个哀求。”(摘自MSDN)


当使用程序实例处置哀求的时分,它会创立哀求页面类的实例,实行它的ProcessRequest办法来处置哀求,这个办法也就是WebPage性命周期的入手下手。


4、Aspx页面与CodeBehind

在深切懂得页面的性命周期之前,我们先来切磋一些Aspx与CodeBehind之间的干系。


<%@Pagelanguage="c#"Codebehind="WebForm.aspx.cs"Inherits="MyNamespace.WebForm"%>


信任利用过CodeBehind手艺的伴侣,对ASPX顶部的这句话应当长短常熟习了,我们来一项一项的剖析它:

Pagelanguage="c#"这个就不必多说了吧

Codebehind="WebForm.aspx.cs"这一句暗示绑定的代码文件

Inherits="MyNamespace.WebForm"这句十分主要,它暗示页面承继的类称号,也就是CodeBehind的代码文件中的类,这个类必需从System.Web.WebControls.Page派生


从下面我们能够剖析出,实践上CodeBehind中的类就是页面(ASPX)的基类,到这里,大概有些伴侣要问了,在编写ASPX的时分,完整是依照ASP的体例,在Html中嵌进代码大概嵌进服务器控件,没有看到所谓“类”的影子啊?

这个成绩实践上其实不庞大,列位利用ASP.Net编程的伴侣能够到你们的体系盘:WINDOWSMicrosoft.NETFramework<版本号>TemporaryASP.NETFiles这个目次下,这个上面就放了一切本机上存在的ASP.Net使用程序的一时文件,子目次的称号就是使用程序的称号,然后再下往两层(为了包管独一,ASP.Net主动发生了两层子目次,而且子目次称号是随机的),然后我们会发明有良多相似:“yfy1gjhc.dll”、“xeunj5u3.dll”如许的链接库和“komee-bp.0.cs”、“9falckav.0.cs”如许的源文件,实践上这就是ASPX被ASP.Net静态编译后的了局,翻开这些源文件我们能够发明:

publicclassWebForm_aspx:MyNamespace.WebForm,System.Web.SessionState.IRequiresSessionState


这就印证了我们后面的说法,ASPX是代码绑定类的子类,它的称号是ASPX文件名加上“_aspx”后缀,经由过程研讨这些代码我们能够发明,实践上一切aspx中界说的服务器控件都是在这些代码中天生的,然后静态发生这些代码的时分,把本来在ASPX中嵌进的代码写在了响应的地位。

当某个页面第一次被会见的时分,Http运转时就会利用一个代码天生器往剖析ASPX文件并天生源代码并编译,然后今后的会见就间接挪用编译后的dll,这也是为何ASPX第一次会见的时分十分慢的缘故原由。



注释了这个成绩,我们再来看另外一个成绩。我们在利用代码绑定的时分,在计划页面拖一个控件,然后切换到代码视图,就能够间接在Page_Load中利用这个控件了,既然控件是在子类中发生的,那为何在父类中能够间接利用呢?

实践上我们能够发明,每当用VS.Net拖一个控件到页面上,代码绑定文件中老是会相似如许的增加一个声明:

protectedSystem.Web.WebControls.ButtonButton1;


我们能够发明这个字段被声明成protected,并且名字与ASPX中控件的ID分歧,细心想想,这个成绩就水到渠成了。我们后面提到ASPX的源代码是被天生器静态天生和编译的,天生器会发生静态天生每个服务器控件的代码,在天生的时分,它会反省父类有无声明这个控件,假如声了然,它会增加相似上面的一句代码:

this.DataGrid1=__ctrl;


这个__ctrl就是天生该控件的变量,这时候候它就把控件的援用赋给了父类中响应的变量,这也是为何父类中的声明必需为protected(实践上也能够为public),由于要包管子类可以挪用。

然后在实行Page_Load的时分,由于这时候候父类的声明已被子类中的初始化代码赋了值,以是我们就能够利用这个字段来会见对应的控件,懂得了这些,我们就不会犯在代码绑定文件中的机关器里利用控件,形成空援用的非常的毛病了,由于机关器是开始实行的,这时候候子类的初始化还没有入手下手,以是父类中的字段是空值,至于子类是甚么时分初始化我们放到前面会商。

5、页面熟存周期

如今回到第三个题目中讲到的内容,我们讲到了HttpApplication的实例吸收哀求,并创立页面类的实例,实践上这个实例也就是静态编译的ASPX的类的一个实例,上一个题目中我们懂得到ASPX实践上是代码绑定中类的子类,以是它承继了一切的protected办法。

如今我们来看看VS.Net主动天生的CodeBehind类的代码,以此来入手下手我们对页面熟命周期的切磋:

#regionWebFormDesignergeneratedcode

overrideprotectedvoidOnInit(EventArgse)

{

//

//CODEGEN:该挪用是ASP.NETWeb窗体计划器所必须的。

//

InitializeComponent();

base.OnInit(e);

}


///<summary>

///计划器撑持所需的办法-不要利用代码编纂器修正

///此办法的内容。

///</summary>

privatevoidInitializeComponent()

{

this.DataGrid1.ItemDataBound+=newSystem.Web.UI.WebControls.DataGridItemEventHandler(this.DataGrid1_ItemDataBound);

this.Load+=newSystem.EventHandler(this.Page_Load);


}

#endregion

这个就是利用VS.Net发生的Page的代码,我们来看,这内里有两个办法,一个是OnInit,一个是InitializeComponent,后者被前者挪用,实践上</p>结论:和PHP一样,ASP简单而易于维护,很适合小型网站应用,通过DCOM和MTS技术,ASP甚至还可以完成小规模的企业应用,但ASP的致命缺点就是不支持跨平台的系统,在大型项目开发和维护上非常困难。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-18 16:18:21 | 只看该作者
ASP主要是用好六个对象,其实最主要的是用好其中两个:response和request,就可以随心所欲地控制网页变换和响应用户动作了。
山那边是海 该用户已被删除
板凳
发表于 2015-1-22 11:43:13 | 只看该作者
你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
分手快乐 该用户已被删除
地板
发表于 2015-1-31 06:15:09 | 只看该作者
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
小妖女 该用户已被删除
5#
发表于 2015-2-6 17:45:14 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
愤怒的大鸟 该用户已被删除
6#
发表于 2015-2-17 20:38:13 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
爱飞 该用户已被删除
7#
发表于 2015-3-5 22:43:56 | 只看该作者
从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了
不帅 该用户已被删除
8#
发表于 2015-3-12 16:31:24 | 只看该作者
Session:这个存储跟客户端会话过程的数据,默认20分钟失效
若天明 该用户已被删除
9#
发表于 2015-3-19 23:58:30 | 只看该作者
用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-15 17:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表