aspx与ashx
ashx在VS的中文版是新建“一般处理程序”,其实是一个实现类System.Web.IHttpHandler接口的类。而任何一个实现了IHttpHandler接口的类都能作为一个外部请求的目标程序。HttpHandler是一个彻底自定义Http请求的方法,它通过web.config来定义Asp.Net运行时来过滤出要自定义的Http请求,发送到定义在web.config的指定类中。
利用.ashx文件是一个更好的方法,这个文件类似于.aspx文件,可以通过它来调用HttpHandler类,从而免去了普通.aspx页面的控件解析以及页面处理的过程。这个文件特别适合于生成动态图片,生成动态文本等内容。
而ashx比aspx简洁多了吧.只有一个文件,没有后台cs文件,ashx对比aspx文件,就好像少了cs文件.其实这就是ashx和aspx不同的地方,因为aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理.而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程.理论上,比aspx要快.
看看发布后的网站,每个ashx的文件最终都被编译成了一个类。
这是解决方案的文件列表 这是通过反编译程序得到的列表
aspx文件是微软的在服务器端运行的动态网页文件,通过IIS解析执行后可以得到动态页面,是微软推出的一种新的网络编程方法,而不是asp的简单升级,因为它的编程方法和asp有很大的不同,他是在服务器端靠服务器编译执行的程序代码,ASP.NET 是建立在公共语言运行库上的编程框架,可用于在服务器上生成功能强大的 Web 应用程序。(这是百度百科上的介绍)
再来添加一个ASPX看看编译过后..
我们可以清楚看到其实ASPX编译过后也产生了2个类,但是下面这2张图片看出其实前台的aspx编译的只是一个继承后台类的一个子类而已...
aspx和ashx还有一个区别就是页面生命周期:
aspx需要编译成类文件,有页面生命周期,而ashx只是一个一般处理程序没有生命周期。