【转载】aspx,ascx和ashx使用小结

【转载】aspx,ascx和ashx使用小结

做asp.net开发的对.aspx,.ascx和.ashx都不会陌生。关于它们,网上有很多文章介绍。“纸上得来终觉浅,绝知此事要躬行”,下面自己总结一下做个笔记。
1、.aspx
Web窗体设计页面。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接口.

分析:
a、以前我们通常都是通过一个简单的aspx文件实现的功能,其实通过ashx也可以。
笔者曾经写过的一篇ajax:数据传输方式简介 ,通过对比,我们发现aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理;而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程(但是ashx也可以处理html的一些逻辑,只是通常都不这么用)。理论上ashx比aspx要快。
b、还是在相同的旧文里,我们知道数据传输的几种方式,其实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的产物。

 

【转自】https://www.cnblogs.com/lgx5/p/5629028.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119328.html原文链接:https://javaforall.net

(0)
上一篇 2021年11月21日 上午10:00
下一篇 2021年11月21日 上午11:00


相关推荐

  • Java:String、StringBuffer和StringBuilder的区别[通俗易懂]

    Java:String、StringBuffer和StringBuilder的区别[通俗易懂]1StringString:字符串常量,字符串长度不可变。2StringBufferStringBuffer:字符串变量(Synchronized,即线程安全)。如果要频繁对字符串内容进行修改,出于效率考虑最好使用StringBuffer,如果想转成String类型,可以调用StringBuffer的toString()方法。Java.lang.StringBuffer线程安全

    2022年7月15日
    19
  • 详细说明Ipad1 4.3.5的越狱过程

    详细说明Ipad1 4.3.5的越狱过程前言,使用Ipad很久了,但是都是老实巴交的使用APPLE提供的功能,没有使用很多的软件,因为要收费,只是看一看pdf和视频。但是时间长了,感觉不新鲜了,看了很久越狱的好处和弊端,心里痒痒的。最好终于手痒痒了,开始动手了。但是开始不顺利,我一直是跟着升级固件,最后升级到4.3.1

    2026年1月28日
    4
  • 普罗米修斯java_springboot集成普罗米修斯

    普罗米修斯java_springboot集成普罗米修斯点击上方“方志朋”,选择“设为星标”回复”666“获取新整理的面试文章Prometheus是一套开源的系统监控报警框架。它由工作在SoundCloud的员工创建,并在2015年正式发布的开源项目。2016年,Prometheus正式加入CloudNativeComputingFoundation,非常的受欢迎。简介Prometheus具有以下特点:一个多维数据模型,其中…

    2022年7月19日
    25
  • ActionContext_javacontext模式

    ActionContext_javacontext模式ActionContextActionContext是Action的上下文,Struts2自动在其中保存了一些在Action执行过程中所需的对象,比如session,parameters,locale等。Struts2会根据每个执行HTTP请求的线程来创建对应的ActionContext,即一个线程有一个唯一的ActionContext。因此,使用者可以使用静态方法ActionContext….

    2025年10月17日
    5
  • Redis在windows下安装过程

    Redis在windows下安装过程

    2021年10月10日
    45
  • 中标麒麟和centos区别_中标麒麟debian

    中标麒麟和centos区别_中标麒麟debian首先参考网上常见的CentOS如何本地yum安装软件的:(后面是中标麒麟)1、首先进行光盘的挂载,注意光盘挂载时不会自动建立目录的,所以需要自己建立目录mkdir/mnt/cdrommount/dev/cdrom/mnt/cdrom#dev目录为设备目录2、更改本地源地址cd/etc/yum.repos.d/#可以看见CentOS-Base.repo和Cen…

    2022年8月10日
    251

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号