基于http事件驱动编程
应用程序的状态包括两种信息:客户端状态和会话状态。 客户端状态主要指用户在页面上输入的内容,在服务器端可以很容易获取。 会话状态:http是无状态协议,所以一般使用Cookie完成会话状态。
http协议:超文本传输协议(Hypertext Transfer Protocol)是一种基于文本的协议,它定义了web游览器和wen服务器的通信方式。http数据包通过指向目标ip地址的80端口(默认)使用“传输控制协议”(TCP)进行传输。
http请求:当我们在浏览器中访问一个URL时,它通过可用的“域名系统”DNS将我们所提供的URL的服务器名转化成一个IP地址,接下来浏览器打开一个套接层(socket),并连接到该地址所指服务器的80端口。 get、Post是最常用的HTTP指令,使用get可以通过URL获取任何信息。 Post指令用于请求服务器接受请求的内容,并对其进行处理。
http响应:服务器的响应包括一个状态行,改状态行有消息的协议版本和退出码组成,状态行后面跟几个表头和主体内容。请求与响应是根据http规范进行格式化得字符串,通过tcp连接进行传输。
服务器端抽象层的构建
浏览器与web服务器间的每次会话都会引起数据包的交互,如果请求的是HTML页面,则web服务器会读取内容并将其刷新到响应报文的主体中,如果URL是ASP.NET页面、则会涉及IIS模块。是一个IIS ISAPI 插件,被称为“ISAPI扩展”。 ISAPI扩展时按照一个文件一个扩展的方式注册的动态链接库。每当有ASPX文件的请求时,就要有一个用来处理该页面的服务器端环境。若成功获取请求的状态并完全还原,变允许这个页面运行并输出期望结果。HTML中<from>标签是唯一授权能提交数据的标签。
ASP.NET组建模型
ASP.NET是NET framework中提供的关键技术,web应用程序有用户向服务器请求的各个页面组成,改服务器会处理并返回标记代码。在资源的扩展名为ASPX时,iss便将进一步的处理工作委托给ASP.NET运行时系统。 ASP.NET运行时将会对所有请求的ASPX 页面源代码转换为net framework类的实例,改实例继承于类Page。最后,运行时的一个ASP.NET是一个对象,它的组建也是一个对象。在ASP.NET页面中,可以标记为有runat属性的任何组件指定一个唯一的ID,允许我们从服务器端访问,runat属性决定一段标记是在呈现的时候已纯文本形式还是转换为一个特定的实例,要是实例,自身会负责相关标记的生成。
ASP.NET服务器
基本上有两个系列:HTML服务器控件和WEB服务器控件,命名空间是:System.Web.UI.HtmlControls和System.Web.UI.WebControls。 ASP.NET页面有控件、文本和标记构成,当源码被转换为页面类的实例后,ASP.NET不会区分文本、标记和控件,所有都是控件,在运行时ASP.NET页面不过是控件的容器。任何一个ASP.NET页面都是Page类派生类的实例,Page类是所有HTTP管线的终点,为了生存页面标记,各个系统组件逐步生成页面对象所需要的信息。
HTTP运行时环境
请求由IIS截取,获得一个身份标识,然后传递给ASP.NET ISAPI扩展,是所有ASP.NET进程的入口点,进程模型是处理请求的一系列操作所组成的序列。在ISS6中,ASP.NET ISAPI扩展负责CLR加载并启动HTTP管线。一旦进入ASP.NET HTTP管线,便会经历多个系统和用户自定义的组件,这些组件会对请求处理,直到有效的页面类成功实例化。
|