ASP.NET(class0609)
2014-06-30 08:55 fanhongshuo 阅读(164) 评论(0) 收藏 举报内容:掌握基于ASP.Net的Web开发,B/S结构原理、ASP.Net内部原理、状态管理(Cookie、Session、ViewState等)、数据验证、普通ASP.Net控件、母版、ListView/Repeater等数据绑定控件、AJAX 、缓存等。
目标:以应用为目标,能够使用ASP.Net开发常见的动态网站功能,并且和Dom、JQuery等客户端技术结合进行网站的开发。
参考书:《ASP.NET 3.5 揭秘》
注意:原理先行,对于ASP.Net来说弄明白了原理才能学得更快。会讲一些原理性的非常规用法代码,用※标识,不要学这种写法。 Java班先讲Servlet再讲JSP,.Net也是先讲HttpHandler再讲WebForm(Aspx)。
企业招聘都不会考你“会不会用某个控件”,而是问你“说一下ASP.Net的页面生命周期”、“描述一下用户在浏览器中输入网址到最后浏览器中显示网页内容,这一系列过程中发生了什么”、“不使用控件自己写一个AJAX效果”、“ViewState的作用是什么”这样的问题
浏览器:htmljavascriptcss
服务器:?HTML(.html).jpg .css .js.Net(.aspx .ashx)JAVA(.jsp)PHP(.php)

1.浏览器与服务器语言
浏览器只负责解释执行html+css+javascript代码
服务器可执行服务器端语言:.NET,JAVA,...,分别由不同的运行 环境执行代码(Framework,JVM) 2.静态页面(html)和动态页面(aspx)的区别?看图 比如说新闻列表页面(邮箱列表)。 index.aspx
那为什么用户每天登录网易邮箱,看到的东西不一样呢?难道每天都有人去更换html代码?
静态页面:在服务器就相当于直接读取文件字符串然后返回客户端浏览器;(任何时候访问看到的都是一样的界面。)
动态页面:在服务器是先交给某语言环境虚拟机编译运行,按照语法生成代码返回客户端浏览器。(不同条件和时候访问看到的都界面也不同。)
请求流程图

什么是ASP.Net
ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML。
可以使用JavaScript、Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成,比如存储数据、访问数据库、复杂的业务逻辑运算、安全性要求高的逻辑运算等。
服务端控件和HTML控件的生成关系:在aspx页面中可以使用服务端控件,简化开发。
但浏览器只认html,因此在包含服务端控件的页面被请求时,页面中的服务器端控件会组装成对应的HTML控件代码字符串,如:TextBox→<input type=“text”/>。 ASP.Net:WebForm、MVC(Model, View , Controler)。
服务器控件不是新的控件,在浏览器端仍然是生成html标签。服务端控件虽然好用,但是也有缺点,并不是什么地方用服务器端控件都好,具体后面讲。
ASP.NET里的常用文件(重点)
文件扩展名 说明
.ashx 一般处理程序,asp.net核心程序,但一般使用.aspx
.aspx 常用程序,用于创建网页和对网页进行编程的核心文件类型(前台文 件),和.aspx.cs文件配套使用
.aspx.cs 常用程序,用于编写大量的C#业务代码,和.aspx配套使用。
.ascx 指明一个asp.net用户定义控件
.asax 包含asp.net应用程序级的事件语法
.config 配置文件,用于设置应用程序的各种属性
.asmx 供宿主Web服务在本地或远程使用
一般处理程序(HttpHandler)
一般处理程序(HttpHandler):是一个实现System.Web.IHttpHandler特殊接口的类。任何一个实现了IHttpHandler接口的类都能作为一个外部请求的目标程序。 它由支持支持ASP.NET的服务器软件调用和启动运行。一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息和产生响应内容。
咱可以通过创建一个我们自己的HttpHandler程序来生成浏览器代码发送回客户端浏览器。 HttpHandler程序可以完成普通类程序所能完成的大多数任务:1.获取客户端通过HTML的Form表单提交的数据和URL参数2.创建对客户端的响应消息内容3.访问服务器端的文件系统4.连接数据库并开发基于数据库的应用5.调用其他类
HTTP handlers 类似于一种 ISAPI(Internet Server Application Programming Interface)扩展程序. HTTP handlers与ISAPI extensions的一个不同点是HTTP handlers可以被直接通过URL中请求的文件名来调用。ISAPI 服务器扩展是可以被 HTTP 服务器加载和调用的程序集(DLL)。用于增强符合 Internet 服务器 API (ISAPI) 的服务器的功能。
第一个网站-新建网站

第一个网站
注意: 1. 选择C# 2. 空网站 3. 文件夹

在网站上点击右键,选择【添加新项】:

第一个网站-选择一般处理程序

FirstShow.ashx(一般处理程序)

1.在要查看的文件上单击右键,选择 在浏览器中查看

2.注意到屏幕右下角状态栏中出现了一个小图标: Cassini服务器是vs内置的开发用的小型服务器程序 我们待会在浏览器看到的页面就是由它处理并返回的。

显示: 终于降临到这个神奇的国度了!

1.用户在浏览器地址栏输入:http://localhost:80777/FirstShower.ashx

2.服务器接收到用户的请求,发现是请求.ashx文件,便将请求交给framework执行,fw找到对应的文件first.ashx,执行后将生成的字符串(通常是html+css+javascript格式)返回给浏览器。
3.浏览器接收到服务器返回的数据,并按照http语法解释执行,以界面的方式展示给用户看到。
(3.1此时如果html等代码中包含外部文件,则再次发送单独请求服务器相应文件数据)
HTTP请求详解图
来结合刚才的网页程序了解一下HTTP请求过程

ashx?— HttpHandler(一般处理程序)

原理和刚才我们的OurWebServer中处理思路差不多,只是更复杂。 FrameWork在接收到请求后,通过反射技术创建请求路径对应的类的对象,并强制转换成IHttpHandler接口对象,统一调用ProcessRequest方法处理。 IsReusable属性用来表示在IHttpHandlerFactory对象创建IHttpHandler的时候是否能够将这个Handler存入池中以便重用。

当浏览器请求发送到服务器电脑,电脑将请求交给指定80端口的软件IIS,IIS发现.aspx和.ashx它自己处理不了,就将请求交给IIS扩展程序 ASPNET_isapi.dll来处理。然后请求被交给HttpRuntime处理,HttpRuntime会将[http请求报文]封装到HttpContext对象中,并通过HttpApplicationFactory来创建一个【HttpApplication】,同时将HttpContext对象传给它。 接下来,大部分处理都是由HttpApplication来完成的!包括 调用处理管道(一系列过滤器---本质上就是调用一系列委托)以及创建被请求的页面类的对象并处理。
HttpHandlers在Asp.net处理的位置(终点)

要注意的是:在处理一个外部请求的过程中,可以有N个过滤器,但最终只能有一个HttpHandler被调用。 HttpApplication HttpRequestWorker->HttpApplicationFactory->HttpApplication -> HttpContext(Request,Response(TextWriter),Session,Application,Server)
浙公网安备 33010602011771号