浏览器中的地址栏键入要访问页面的地址:回车(是和服务器软件打交道)----向服务器发送请求(以http协议为基础,服务器按照此协议解释理解接收到的数据),服务器接收到发送的请求,根据请求信息知道当前所要访问的页面地址,然后服务器软件IIS通过地址在整个网站的程序集中找到被请求页面的页面类(整个网站被编译成一个程序集,程序集中包括所有页面的页面类)----------另一种简化,不注重细节说法----【找到服务器中被访问的网站页面所在的文件夹,通过反射的方式创建所访问页面类的对象】------为了统一调用处理方法,将页面类对象转化为接口--IHttpHandle接口,然后通过调用接口的ProcessRequest方法(被访问时被调用的处理方法,相当于winform中的load()方法)为入口方法,来实现处理所有代码------产生字符串输出到浏览器,浏览器接收到服务器返回的数据,并按照语法解释执行,以界面的方式展示给用户看到。

浏览器和服务器到底是什么东东?

如果我们自己来编写一个浏览器和服务器程序,该怎么做?

就好像打电话一般:

  • 咱们用中文还是用英文?(约定通信的语法)
  • 准备好要说的话 (按照语法准备要传输给对方的数据)
  • 拨通电话(建立连接)
  • 通过电话机/电话线说话(通过互联网传输数据)
  • 注意:两个人都得拿对话筒(通信双方关注接收对方的数据)

总结:

  • 浏览器:一个可以通过HTTP协议向服务器发送各种请求,并对从服务器发来的超文本信息和各种多媒体数据格式进行解释、显示和播放 。
  • 服务器:一个管理资源并为用户提供服务的计算机软件。
  • 交互时使用HTTP协议。

HTTP请求详解图

浏览器和服务器本质上就是两个使用Socket进行基于HTTP协议的通信的两个应用程序(我们使用WinForm)。

咱自己做个服务器程序要解决的问题:

  • -1.怎么接收浏览器的请求?接收以后怎么理解?
  • 0.怎么向浏览器发送响应?发送后浏览器怎么理解?
  • 1.如何对静态页面(html/css/javascript)的请求做出响应?
  • 2.如何对动态页面(ashx/aspx)的请求作出响应?动态文件可是有很多的,使用什么方式来调用呢?
  • 3.如何对图片文件(jpg/gif)的请求作出响应?
  • 4.如何保存状态?

解决思路:

  • 1.使用套接字进行数据交换。
  • 2.使用HTTP协议(到底什么是HTTP协议?)的数据,双方按照此协议解释理解接收到的数据。
  • 3.直接读取静态文件的数据并通过套接字发送。
  • 4.对于动态文件的请求,可以通过分析请求页面,并反射所对应的类,并通过接口调用类的方法。

访问ashx一般应用程序的更多相关文章

  1. 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用

    错误提示: 服务器应用程序不可用 您试图在此 Web 服务器上访问的 Web 应用程序当前不可用.请点击 Web 浏览器中的“刷新”按钮重试您的请求. 管理员注意事项: 详述此特定请求失败原因的错误信 ...

  2. jquery访问ashx文件示例

    转自原文jquery访问ashx文件示例 .ashx 文件用于写web handler的..ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件 ...

  3. 一个Tomcat及一个ip,绑定不同的域名,各个域名访问各自不同应用程序的配置方法

    http://nickandmiles.blog.163.com/blog/static/23422123201110151492166/ 条件是:这样一种实际情况是,就一台服务器,当公网的IP地址也 ...

  4. c++中,如果访问数组越界,程序可能会意外终止(像死循环)

    #include<iostream> using namespace std; ];// int main(){ vis[]=;//访问越界 ; } 程序错误表现:

  5. 实践:IIS7下访问ashx页面,显示404

    问题描述 1.路径什么的都对,这方面的原因就不要想了 2.在我的电脑上可以,在同事的电脑上不可以 方案1:未注册ashx的处理应用程序 也就是不知道IIS不知道用什么应用程序处理ashx文件,解决办法 ...

  6. 禁止直接访问ashx页面

      if (context.Request.ServerVariables["HTTP_REFERER"] == null)             {               ...

  7. PostgreSQL 安装PYTHON扩展,访问页面或者第三方程序

    应用场景当数据库中relation表中有数据插入.更新.删除操作,postgresql 调用第三方接口,进行处理.这里用pgsq 中python的扩展插件来实现. 1.安装PostgreSQL中的Py ...

  8. 系统使用 aspose.cell , 使得ashx第一次访问会变很慢

      网站放在IIS后, 在网站第一次访问后.  回收应用程序池 第一次访问aspx页面还是比较快.   但第一次访问ashx会很慢.   后发现原因: aspose.cell的5.3...版本. 的原 ...

  9. 12.通过微信小程序端访问企查查(采集工商信息)

    需要注意的问题: 一.1.微信端访问企查查小程序需要登录.2.访问抓包获取的url是有时效性的过一段时间就不能用了. http://xcx.qichacha.com/wxa/v1/base/getEn ...

随机推荐

  1. 初级Java面试题 - JavaSE篇

    p{font-size:18px;} li{font-size:18px;} 加入我的QQ群(701974765) 获取更多好用又好玩的软件,还有不定期发放的福利呦(- ̄▽ ̄)- Java基本数据类型 ...

  2. 在虚拟机中的搭建Web服务器(CentOS)

    1.制作本地yum源 相关可查看:http://www.cnblogs.com/xiaomingzaixian/p/8424290.html 2.安装JDK 上传上传jdk-7u45-linux-x6 ...

  3. C# 使用KingAOP面向切面编程

    1. 在Nuget中安装KingAOP 2. 日志DEMO public class Test : IDynamicMetaObjectProvider { [LogAspec] public voi ...

  4. [LeetCode] 9.Palindrome Number - Swift

    Determine whether an integer is a palindrome. Do this without extra space. 题目意思:判断一个整数是否是回文数 例如:1232 ...

  5. type为number的<input>标签 type和size属性失效

    html5中input的type属性增的可取值新增几种,对于不支持这几种新增值的浏览器会统一解析为text类型. Firefox.ie9不支持

  6. Elven Postman---hdu5444(二叉树)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5444  有一个序列,由这个序列可以画出一颗二叉树(每个节点的左边(W)都比它大,右边(E)都比它小), ...

  7. x86架构下的控制寄存器CR0-CR4

    关于这几个寄存器,每次翻看intel手册都很不好找,干脆直接贴在这里吧!

  8. 模块讲解----sys

    sys:跟python解释器相关的信息 #命令行参数list,第一个元素时程序本身路径 print(sys.argv) 注意:执行脚本时,可以传参数. #退出程序,正常退出时exit(0) sys.e ...

  9. mac下python环境pip报错[SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590) 的解决方法

    1.mac下python环境pip报错: issuserdeMacBook-Pro:~ issuser$ pip install pyinstallerCollecting pyinstaller  ...

  10. 工作笔记——限定input上传文件对话框中能选取的文件的格式

    原文:http://www.dengzhr.com/frontend/1059 input[file]标签的accept属性可用于指定上传文件的 MIME类型 . 例如,想要实现默认上传图片文件的代码 ...