浏览器中的地址栏键入要访问页面的地址:回车(是和服务器软件打交道)----向服务器发送请求(以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. 170323、Spring 事物机制总结

    spring两种事物处理机制,一是声明式事物,二是编程式事物 声明式事物 1)Spring的声明式事务管理在底层是建立在AOP的基础之上的.其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加 ...

  2. Jquery 中 .trigger 的用法

    项目中有个需求,数据加载完成后,默认模拟点击某个元素节点(选中某个元素节点)并触发事件 $('.course_list dd').on('click', function () {     //取当前 ...

  3. R中实现脚本调用,以及函数调用

    R中实现脚本调用,以及函数调用 这里的列子是test.R调用mysql_con.R中的函数 mysql_con.R # 使用RMySQL操作数据库 # 载入DBI和RMySQL包 #library(D ...

  4. Android Handler 的使用

    Android UI 操作是线程不安全的.我们只能在UI线程或者说主线程中修改UI.试想多个Thread操作同一个UI,可能引起不一致.UI 线程的主要工作是:UI界面更新显示,各个控件的交互等等.一 ...

  5. JavaScript自定义函数

    js对象转成用&拼接的请求参数(转) var parseParam=function(param, key){ var paramStr=""; if(param inst ...

  6. CF#301 B:School Marks(贪心)

    B:School Marks 有n个测试,已经完成了k个,每个测试得分为a[i],接下来的分数不知道,让我们求出任何一个满足题意的即可,满足题意就是n个测试的得分总和<=x, 中位数>=y ...

  7. Apache mahout 源码阅读笔记--协同过滤, PearsonCorrelationSimilarity

    协同过滤源码路径: ~/project/javaproject/mahout-0.9/core/src $tree main/java/org/apache/mahout/cf/taste/ -L 2 ...

  8. 浅谈virtualenv(虚拟环境)

    简介 virtualenv为应用提供了隔离的Python运行环境,解决了不同应用间多版本的冲突问题. 例如: 如果我们要同时开发多个应用程序,那这些应用程序都会共用一个Python,就是安装在系统的P ...

  9. 使用python下载一些链接的软件包

    import reimport requestsimport osimport wget get = raw_input("please input your link::")pa ...

  10. Linux SSH免登录配置总结(转)

    转载请出自出处:http://eksliang.iteye.com/blog/2187265 一.原理 我们使用ssh-keygen在ServerA上生成私钥跟公钥,将生成的公钥拷贝到远程机器Serv ...