透过ashx看浏览器服务器运行本质(图解)

浏览器与IIS服务器与.Net FrameWork关系

Asp.Net

ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML,然后响应给浏览器。

可以使用JavaScript、Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成,比如存储数据、访问数据库、复杂的业务逻辑运算、安全性要求高的逻辑运算等。

ASP.Net:一般处理程序(ashx),WebForm(aspx)、MVC3(Model, View , Controler)。

Asp.Net里的常用文件


























文件扩展名

说明

.ashx

一般处理程序,ASP.NET核心程序,但一般使用.aspx[不需要返回大量html代码时使用]

.aspx

常用程序WebForm,用于创建网页和对网页进行编程的核心文件类型(前台文件),和.aspx.cs文件配套使用[当需要返回大量html代码使用使用它]

.aspx.cs

常用程序,用于编写大量的c#业务代码,和.aspx配套使用。

.ascx

指明一个 ASP.NET 用户定义控件

.asax

包含 ASP.NET 应用程序级事件的事件语法

.config

配置文件,用于设置网站应用程序的各种属性

.asmx 供宿主 Web 服务在本地或远程使用

一般处理程序(HttpHandler)

是一个实现System.Web.IHttpHandler接口的特殊类。
任何一个实现了IHttpHandler接口的类是作为一个外部请求的目标程序的前提。(凡是没有实现此接口的类,就不能被浏览器请求。)

它由支持ASP.NET的服务器调用和启动运行。一个HttpHandler程序负责处理它所对应的一个或一组URL地址的访问请求,并接收客户端发出的访问请求信息(请求报文)和产生响应内容(响应报文)。

咱可以通过创建一个我们自己的HttpHandler程序来生成浏览器代码发送回客户端浏览器。

HttpHandler程序可以完成普通类程序所能完成的大多数任务:
1.获取客户端通过HTML的Form表单提交的数据和URL参数
2.创建对客户端的响应消息内容
3.访问服务器端的文件系统
4.连接数据库并开发基于数据库的应用
5.调用其他类

ashx的简单使用
Cul.ashx读取model.html将处理后的html代码返回给浏览器


代码如下:

using System.Web;
namespace ASHX{
public class Cul : IHttpHandler { //IHttpHandler非常重要的接口 实现接口就是为了统一调用ProcessRequest处理页面的方法
//注意:Q2:为什么浏览器输入cul.ashx同样能显示内容呢? A2:因为程序编译的时候 对Cul.ashx进行了重命名
public void ProcessRequest( HttpContext context) { //context 请求上下文对象 浏览器请求所有信息包括在其内部
context.Response.ContentType = "text/plain" ;//text/plain 当做普通的字符串解释就行 text/html则是当做html解释执行
//注:如果text/plain 而输出的内容时一个完整的html页面内容 会被浏览器自动解释执行 因为浏览器的向下兼容
//获得模板页面在 服务器上的 物理路径
string PagePath = context.Server.MapPath("Model.htm" );
//读取模板内容
string HTMLStr = System.IO.File .ReadAllText(PagePath);
HTMLStr = HTMLStr.Replace( "@{title}" , "这是第一个静态处理文件" ).Replace( "@{Content}", "我是静态处理文件动态产生的哦~ ~" );
//输出到页面
context.Response.Write(HTMLStr); //Response服务器响应属性
context.Response.Write( "痞子一毛" ); //Q1:为什么"痞子一毛"和HTMLStr一起输出到界面 而非覆盖呢?
//A1:因为Write其实是向 Response属性所操作的一个HttpResponse对象 里的HtmlWrite对象里的缓存区写数据
//Q3:为什么要写入缓存区? A3:因为此时压根儿就没有生成响应报文
}
public bool IsReusable {
get {
return false ; //是否可重用
}
}
}
}

html.model代码如下:


代码如下:

< head>
<title > @{title}</ title >
</ head>
< body>
@{Content}
</ body>
</ html>

以上代码运行原理图解

(0)

相关推荐

  • 透过ashx看浏览器服务器运行本质(图解)

    浏览器与IIS服务器与.Net FrameWork关系 Asp.Net ASP.Net是一种动态网页技术,在服务器端运行.Net代码,动态生成HTML,然后响应给浏览器. 可以使用JavaScript.Dom在浏览器端完成很多工作,但是有很多工作无法在浏览器端完成,比如存储数据.访问数据库.复杂的业务逻辑运算.安全性要求高的逻辑运算等. ASP.Net:一般处理程序(ashx),WebForm(aspx).MVC3(Model, View , Controler). Asp.Net里的常用文件

  • .Net Winform开发笔记(四)透过现象看本质

    写在前面: 从一个窗体的创建显示,再到与用户的交互,最后窗体关闭,这中间经历过了一系列复杂的过程,本文将从Winform应用程序中的Program.cs文件的第一行代码开始,逐步分析一个Winform应用程序到底是怎样从出生走向死亡,这其中包括Form.Show()和Form.ShowDialog()的区别.模式对话框形成的本质原因.消息循环.Windows事件与.net中事件(Event)的区别.System.Windows.Form.Application类的作用.以及我之前一篇博客中(.N

  • 微信小程序 在Chrome浏览器上运行以及WebStorm的使用

    「微信小程序」的开发框架体验起来,还不错--自带了UI框架.但是问题是他的IDE,表现起来相当的糟糕--其实主要是因为,我当时买WebStorm License买了好多年.所以,我觉得他的IDE真不如我这个付费好用. 而且,作为一个拥护自由和开源的 「GitHub 中国区首席Markdown程序员」.微信在「微信小程序」引导着Web开向封闭,我们再也不能愉快地分享我们的代码了. 如果我们放任下去,未来的Web世界令人堪忧. 好了,废话说完了: 文章太长不想看,可以直接看Demo哈哈: GitHu

  • php+javascript实现的动态显示服务器运行程序进度条功能示例

    本文实例讲述了php+javascript实现的动态显示服务器运行程序进度条功能.分享给大家供大家参考,具体如下: 经常有这样的业务要处理,服务器上有较多的业务需要处理,需要分批操作,于是就需要一个提示客户现在完成进度的进度条. 这个是php+javascript的进度条. <?php //set_time_limit(0); //注意,如果是安全模式,请不要打开,如果不是安全模式,这个选项可以打开 for ($i = 0; $i < 500; $i++) { $users[] = 'Tom_

  • centOs6.9服务器版本安装图解(包含java和mysql)

    首先新建一个空的系统盘(选择的是centOs64位版本) 点击图上的编辑虚拟机设置 依次选择centOs的镜像文件,然后点击确定.下面开启虚拟机 出现这个画面之后选择第一个选项 出现上述画面后,选择skip跳过就到了安装的正式界面 一路next直到下面的画面出现 然后选择是,忽略所有数据(这个不用担心数据的问题,因为一开始建的就是空白磁盘) 然后出现下面的画面 可以自由的改名字,然后再点下一步之前一定要点配置网络(否则会上不了网) 先选择System eth0这个,然后点编辑(或者双击Syste

  • J2EE Servlet基础在浏览器上运行HelloServlet的方法

    Servlet servlet本身不能独立运行,需要在一个web应用中运行的 而一个web应用是部署在tomcat中.开发一个servlet需要 创建web应用项目 编写servlet代码 部署到tomcat中 IDEA操作具体流程 1.创建名为j2ee的项目 2.导入servlet-api.jar包(Servlet需要用到包中的相关类) 附上下载链接 链接: https://pan.baidu.com/s/1cb5BqQ1TrKcPiaf6zuPLFQ 提取码: xtq6  导入: 右键项目

  • 解决服务器运行jupyter notebook方法

    目录 服务器运行jupyter notebook 虚拟环境 然后关防火墙 打开jupyter notebook 打开浏览器,跑起来 也可以将服务器换成本地的,建立一个隧道 本地打开没问题 今天教大家 服务器运行jupyter notebook 第一,给我买一台服务器 要知道公网ip 虚拟环境 mkvirtualenv -p /usr/bin/python3.6 deeplearn workon deeplearn pip install tensorflow pip install jupyte

  • 网络浏览器中运行Python脚本PyScript剖析

    目录 正文 使用PyScript编程 标准库导入 使用来自PyPI的库 本地导入 REPL 标签 与 JavaScript 事件监听器互动 正文 PyScript可以让你在浏览器中直接运行Python脚本,与JavaScript并排,在你的代码和网页之间进行双向互动. 由Anaconda创建的PyScript是一项实验性的但很有前途的新技术,它使Python运行时在支持WebAssembly的浏览器中作为一种脚本语言使用. 每个现代常用的浏览器现在都支持WebAssembly,这是许多语言(如C

  • 详解MySQL客户端/服务器运行架构

    目录 前言 MySQL客户端/服务器架构 客户端与服务器连接的过程 TCP/IP 命名管道和共享内存 Unix域套接字文件 小结 前言 之前对MySQL的认知只限于会写些SQL,本篇开始进行对MySQL进行深入的学习,记录和整理下自己对MySQL不熟悉的地方.如果有需要可以关注我的专栏一起学习,共同进步!关于mysql的安装就不说了,直接从mysql的客户端/服务器运行架构开始学习.Let′s go~ MySQL客户端/服务器架构 MySQL其实跟我们平时使用的程序一样,是由两部分组成的,一部分

  • 可以从一台远程服务器运行 SP2 安装程序Install.vbs

    Install.vbs 发布者 Microsoft Corporation 脚本专家 此脚本由 scenario1.vbs 在一台网络主机上启动.Install.vbs 可以在安装了 SP2 的主机上以本地方式运行,它执行以下任务: ? 从一台远程服务器运行 SP2 安装程序. ? 在主机上设置 AutoAdmin 和 RunOnce 两个注册表项. ? 将结果记录到文本文件 computername-sp2-instlog.txt 并将该文件复制回管理工作站. ? 强制重新启动,随后 runo

随机推荐