首页 > 代码库 > 第一章 网站应用程序

第一章 网站应用程序


System.URI
  常用属性:
    Scheme 协议名称
    Host 主机
    Port 端口
    AbsoultePath 绝对路径
    Query URI地址中的参数部分
  URI(通用资源标识符)
  URL(统一资源定位符)
  为IP取一个有意义的名字就是域名,通过DNS(域名服务器)来关联IP和域名
程序与程序的通信层次
  1.物理层
  2.数据链路层
  3.网络层
  4.传输层
  5.会话层
  6.表示层
  7.应用层
应用层协议的内容需要通过传输层在浏览器和服务器之间进行传送
  TCP/IP中
    TCP负责可靠通信的传输层协议
    IP负责网络层的协议
  HTTP协议就是TCP/IP协议中专门用于浏览器与web服务器之间通信的应用层协议
    在同一个网络地址上,为了区分使用相同的协议的不同应用程序,可以为不同的应用程序分配一个数字编号,这个编号称为网络端口(2字节)由IANA(互联网地址分配机构)分配这些网络端口

    1.0-1023 为众所周知的端口
    2.1024-49151 登记端口
    3.49152-65535 私有端口

那怎么来实现一个简单的HTTP服务器?
  1.SOCKET 基于SOCKET 最原始的,那也就是功能最强大的,当然也就最复杂
  2.TCPListener 基于TCP的,因为HTTP就是基于TCP/IP的,对SOCKET的进一步封装
  3.HttpListener 基于TCP/IP,对TCPListener的进一步封装
  常用属性:
    IsSupport 是否支持
    prefixes 前缀
程序集管理的最小逻辑单位为应用程序域(AppDomain)
>应用程序域
>应用程序集

应用程序的四大机制
1.隔离,不同应用程序域之间不能之间访问,跨应用程序域访问的对象必须派生自System.MarshalByRefObject
2.卸载 被加载后必须以应用程序域为单位卸载
3.安全 以应用程序域为边界的安全机制
4.配置 以应用程序域为边界的程序配置
Web 应用程序域
ApplicationHost类的静态方法CreateApplicationHost(Type,virtualDir,physicalDir);

默默无闻的工作者对象:
  在ASP.NET中,准备用于处理的请求,必须封装为HttpWorkerRequest类型对象
  SimpleWorkerRequest可以处理简单的请求,将返回的内容输出到TextWriter流中
Web应用程序的运行时
  >System.Web.HttpRuntime类是整个ASP.NET服务器处理入口
    >HttpResponse
      默认情况下,HttpResponse对输出的页面进行了缓冲
      可以通过BufferOutput属性来获取
重定向(Redirect)原理
  返回状态码:302
  设置回应头["Location"]="地址"
    >HttpRequest
      >Headers
      >Form
      >Cookies
      >Files
辅助的常用工具类HttpServerUtility


一个简单的Asp.net web服务器实现步骤
  1.可以通过SimpleHttpListener来获取一个Http的连接

  2.获取一个连接以后呢,就需要对它的请求进行处理,但是在这里我们进行直接的处理,因为不在同一个应用程序域中,所以我们用委托指向它

  3.创建跨应用程序域的对象,继承至System.MarshalByRefObject,创建一个处理请求的方法

  4.在处理请求的方法中指明asp.net程序的入口,并通过HttpRuntime.ProcessRequest(HttpWorkRequest)方法来获取请求的结果

 

第一章 网站应用程序