ASP.NET网站制作之由ASP.NET所谓前台挪用背景、背景挪用前台想到HTTP――实际篇仓酷云 ...
捆绑编译器。用户不需要受制于厂家,自己就能将程序在新平台上编译运行。除了牛B轰轰的linux,估计也没有系统捆绑c/c++的编译器,而且许多新平台都无法支持复杂的c/c++编译器在上面直接运行。事情两年多了,我会常常实验给公司小同伴儿们办理一些成绩,几个月上去我发明初进公司的小伴侣最爱问的成绩就三个1.我想前台挪用背景的XXX办法怎样弄啊?
2.我想背景挪用前台的XXXJavaScript办法怎样弄啊?
3.怎样用JavaScript找到/创立/修正XXX这个服务器端控件啊?
每次我会跟小伴侣剖析一下为何会有云云合情合理的设法,然后说本来你做XXX啊,那你应当如许,可发明这类形式太失利了,由于隔几天我又会听到小伴侣仍是有相似的困惑。
我决意今后再有谁问这个成绩,我就让谁给我讲讲HTTP协定,几回事后效果不凡啊,看看这两个成绩和HTTP协定有甚么干系吧
HTTP协定
HTTP协定即超文本传输协定(HTTP-Hypertexttransferprotocol)是散布式,合作式,超媒系统统使用之间的通讯协定。是万维网(worldwideweb)互换信息的基本。是一种具体划定了扫瞄器和万维网服务器之间相互通讯的划定规矩,经由过程因特网传送万维网文档的数据传送协定。
这是从百度上抄来的界说,感到味同嚼蜡,归正我如果问人甚么是HTTP,如果这么回覆我,我一定得急,以是另有
HTTP协定同意将超文本标志言语(HTML)文档从Web服务器传送到Web扫瞄器。HTML是一种用于创立文档的标志言语,这些文档包括到相干信息的链接。您能够单击一个链接来会见别的文档、图象或多媒体对象,并取得关于链接项的附加信息。
仍是不分明,看看HTTP的哀求-呼应模子就分明了
HTTP协定划定的交互很复杂,客户端向服务器发送包括着信息的哀求(尽逼不是全部HTML页面),服务器接到哀求后,依据哀求信息天生呼应(甚么呼应都大概,多半是HTML页面文本),然后把呼应发给扫瞄器(假如呼应是HTML页面的话,扫瞄器就加载这个新页面了)
HTTP的哀求-呼应模子十分复杂,但是初进门的时分我们会误解它很深
扫瞄器究竟向服务器哀求甚么了
哀求不是全部HTML页面,小伴侣们在ASP.NET的codeBehind中常常试图往Request对象中找页面的某个DIV,以为哀求就是全部HTML页面,来由也很充实,我可以找到服务器端控件,怎样就找不到HTML控件呢。会见百度首页一下看看扫瞄器事实哀求了甚么
当我们在扫瞄器地点栏输出uri回车大概页面form提交,扫瞄器会把哀求打成包,HTTP哀求包(GET/POST等哀求办法)由三个部分组成,
<request-line>
<headers>
<blankline>
[<request-body>]
request-line:俗称哀求行,相似于如许Get/HTTP/1.0,用来讲明哀求范例、要会见的资本路径(/暗示跟路径)和利用的HTTP版本。
headers:也就是我们常说的HTTPHeaders,会见百度首页的时分是一个如许的东东
必要注重的是heasers中包含了该域下的cookie
blankline:这就是一个空行,仍是必需的
request-body:这个在post哀求时有效,是页面表单位素的name和value,也就是在Resquest.Forms中能取到的内容,在百度上搜刮失掉,requestbody是如许的
是的,HTTP哀求包中就这些内容,没有甚么div啊,甚么服务器端控件啊甚么的了
为何能在codeBehind中操纵服务器端控件,页面上却不克不及用JavaScript来做
复杂的压服务器端控件是服务器的,服务器并没有把这个给客户端,给客户真个只是服务器端控件render的html文本,以是服务器端找到服务器端控件(你看人家都叫服务器端控件了),客户端找不到。看起来很高端深邃,实践很复杂,看看服务器交给扫瞄器的是甚么,和Request格局相似,Response格局以下
<status-line>
<headers>
<blankline>
[<response-body>]
status-line:暗示哀求的形态码,也就是我们罕见的200、301、404、500神马的
headers:一些呼应的数据,仍是下面例子,在百度上搜刮失掉,responseheaders是如许的
content-type是否是很熟习?值得注重的是responseheaders中一样包括cookie
blank-line:仍然是不成或缺的空缺行
response-body:呼应内容,会见百度首页responsebody也许如许,实在也就是百度首页的HTML代码
也就是说,也就是说responsebody在一样平常情形下就是失掉的就哀求页面的HTML,扫瞄器吸收到response后会依照responsebody从头加载衬着页面内容。写过WebControl的同砚一定晓得,服务器端控件render成甚么了
看一个最复杂的页面
<%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="FrontBehind.Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><div><asp:ButtonID="btnServer"runat="server"Text="Server"OnClick="btnServer_Click"/></div></form></body></html>
页面上只要一个服务器真个控件(不要太计算),看看天生的页面内容
服务器真个控件Button经由处置后交给客户端时已酿成了一个submit范例的input,页面上经由过程JavaScript固然找不到这个服务器端控件了,有乐趣同砚能够看看WebControl的rendercontrol办法,一切的WebControl在Pagerender的时分城市挪用此办法,将服务器端控件依照本人划定规矩render成扫瞄器熟悉的HTML,然后放到Resoponse中。
扫瞄器从噢乖服务器失掉的是全新的HTML文本(不思索Ajax),没有别的服务器控件神马的。
在编码的时分的页面和扫瞄器拿到的页面有甚么干系
大概偶同砚会对下面的实际有疑问,我们在编程的时分写的页面,下面有良多服务器端控件,和终极扫瞄器展现的页面有甚么干系?!这就必要我们讲讲静态网页的宿世此生。
最入手下手的时分页面全都是静态的HTML文本,扫瞄器做的事变就是告知服务器我要哪一个页面,服务器传给你这个页面,就像张三家开了个砖窑,你必要了就会吼一嗓子,张三,给我块砖!然后张三扔给你。
可是如许好单调,偶然候页面内容相称有纪律,可是页面是静态的就得准被良多页面,也没法做到和用户交互,因而发生了ASP等服务器剧本言语,能够依据用户参数大概预设前提来修正页脸部份内容,不再复杂前往扫瞄器静态页面文件内容,而是依据划定规矩天生HTML文本,然后前往给扫瞄器。
厥后面向对象的提高及模块儿化编程等等头脑的影响,有一些经常使用的划定规矩,好比画出个日历啊我们能够写成一个独自的模块儿,然后经由过程指令使其嵌在页面内,用的时分写一条指令就能够了,这就是ASP.NET中比方Button等的WebControl,也就是服务器端控件。
假如服务器判别出扫瞄器哀求的是带有服务器剧本的页面的时分(一样平常依据拓展名大概Map干系判别),就会交给流动范例剧本的“注释器”去向理这些剧本,转换成HTML语句,然后前往给客户端。
以是扫瞄器出现的页面是我们依据开辟时分界说的划定规矩,静态天生的HTML文本加载衬着的了局
HTTP事情流程
[*]一次HTTP操纵称为一个事件,其事情历程可分为四步:
起首客户机与服务器必要创建毗连。只需单击某个超等链接,HTTP的事情入手下手。
创建毗连后,客户机发送一个哀求给服务器,哀求体例的格局为:一致资本标识符(URL)、协定版本号,后边是MIME信息包含哀求润色符、客户机信息和大概的内容。
服务器接到哀求后,赐与响应的呼应信息,其格局为一个形态行,包含信息的协定版本号、一个乐成或毛病的代码,后边是MIME信息包含服务器信息、实体信息和大概的内容。
客户端吸收服务器所前往的信息经由过程扫瞄器显现在用户的显现屏上,然后客户机与服务器断开毗连。
HTTP特性
经由过程下面的申明能够看出HTTP协定有几个特性
1.HTTP协定永久都是客户端倡议哀求,服务器回送呼应。如许就限定了利用HTTP协定,无法完成在客户端没有倡议哀求的时分,服务器将动静推送给客户端。必需是客户端给服务器要,而不克不及服务器自动给客户端。
2.HTTP协定是一个无形态的协定,统一个客户真个此次哀求和前次哀求是没有对应干系。也就是说你一连两次会见百度,这两次之间没有甚么干系(不思索缓存),不会像你往亲戚家串门,前次往了,此次就熟悉你了。要想让它们有干系我们注重到requestheader和resonseheader都有cookie,Session等客户端形态保护就是基于此完成的。
3.在哀求时并非页面一切内容都被发往服务器
4.在客户端就已没有甚么服务器端控件、办法、属性了,只要HTML文本
计算机发展到这个时候,很多技术日益成熟,想学好一种技术都是不容易的,当你学会用的时候你对它的很多原理可能很不了解) 能产生和执行动态、交互式、高效率的站占服务器的应用程序。运用ASP可将VBscript、javascript等脚本语言嵌入到HTML中,便可快速完成网站的应用程序,无需编译,可在服务器端直接执行。容易编写。 在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗? 由于CGI程序每响应一个客户就会打开一个新的进程,所以,当有多个用户同时进行CGI请求的时候,服务器就会打开多个进程,这样就加重了服务器的负担,使服务器的执行效率变得越来越低下。 网页从开始简单的hmtl到复杂的服务语言,走过了10多个年头,各种技术层出不穷,单个的主流技术也在不断翻新的版本,现在分析下各种语言的区别、优势、劣势、开发注意事项! 提供基于组件、事件驱动的可编程网络表单,大大简化了编程。还可以用ASP.NET建立网络服务。 HTML:当然这是网页最基本的语言,每一个服务器语言都需要它的支持,要学习,这个肯定是开始,不说了. 现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。 碰到复杂点的问题都不知道能不能解决,现在有点实力的公司都选择自已在开源的基础上做开发。但没听说过有人在IIS上做改进的,windows、sqlserver集群方面的应用也很少见。 主流网站开发语言之PHP:PHP的全名非常有趣,它是一个巢状的缩写名称——“PHP:HypertextPreprocessor”,打开缩写还是缩写。PHP是一种HTML内嵌式的语言(就像上面讲的ASP那样)。而PHP独特的语法混合了C,Java,Perl以及PHP式的新语法。它可以比CGI或者Perl更快速地执行动态网页。 代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。 ASP在执行的时候,是由IIS调用程序引擎,解释执行嵌在HTML中的ASP代码,最终将结果和原来的HTML一同送往客户端。 Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。 关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
页:
[1]