博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net基础概念整理(二)aspx,ascx和ashx
阅读量:6137 次
发布时间:2019-06-21

本文共 1558 字,大约阅读时间需要 5 分钟。

1、.aspx

窗体设计页面。Web窗体页由两部分组成:视觉元素(html、服务器控件和静态文本)和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件)。VS将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。

2、.ascx

asp.net的用户控件,是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件,但是这个网站的页面可以集成这些文件里所包含的功能。

3、.ashx

前面两个都太熟悉了,这个才是要讲的重点。

(1)、使用举例

.ashx文件是主要用来写web handler的。使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的,.aspx包含的所有html实际上是一个类,所有的html都是类里面的成员,这个过程在.ashx是不需要的。ashx必须包含IsReusable属性(这个属性代表是否可复用,通常为true),而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口. 

通过对比,我们发现aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理;而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程(但是ashx也可以处理html的一些逻辑,只是通常都不这么用)。理论上ashx比aspx要快。

还是在相同的旧文里,我们知道数据传输的几种方式,其实ashx都可以实现(修改ashx文件里context.Response.ContentType 即可),这里不再赘述了。

(2)、ashx特别适合于生成动态图片,生成动态文本(纯文本,json,xml,javascript等即可)等。

(3)、.ashx文件有个缺点:它处理控件的回发事件非常麻烦。处理数据的回发,通常都需要一些.aspx页的功能,只有自己手动处理这些功能(还不如直接建一个aspx文件来处理)。所以,一般使用.ashx输出一些不需要回发处理的项目即可。

4、总结

aspx-->P(Page)

ascx-->C(Control)

ashx-->H(HttpHandler)

当浏览器访问web服务器,我们最终接收到的还是html文本。浏览器通过渲染引擎解释这些标签,在屏幕上展现出可见的效果。而asp.net不过就是我们应用的一种平台技术来"变相"解释html的,说白了它就是为了提高生产率,它的技术术语再多,本质上还是html范畴内的东西(如果你不通过那些动态页面技术完全利用html和浏览器(当然包括js)技术来实现动态页面效果,那么你会发现效果有了代码量也相当可观).所以说web开发的底层就是一堆的html标签,无论是asp.net还是jsp都是对html某种方式的包装,是html的产物。

      .ashx文件有个缺点,他处理控件的回发事件非常麻烦,比如说如果用它来生成DataGrid的列表也不是不行,但是处理数据的回发,需要一些.aspx页的功能,只有自己手动处理这些功能。所以,一般使用.ashx,用来输出一些不需要回发处理的项目即可。

转载于:https://www.cnblogs.com/Little-Li/archive/2012/08/24/2654144.html

你可能感兴趣的文章
多线程设计模式
查看>>
解读自定义UICollectionViewLayout--感动了我自己
查看>>
SqlServer作业指定目标服务器
查看>>
UnrealEngine4.5 BluePrint初始化中遇到编译警告的解决办法
查看>>
User implements HttpSessionBindingListener
查看>>
抽象工厂方法
查看>>
ubuntu apt-get 安装 lnmp
查看>>
焊盘 往同一个方向增加 固定的长度方法 总结
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
jquery的冒泡和默认行为
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
前端学习之正则表达式
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>