1.网站应用程序 - 《APS.NET本质论》

1.1.HTTP协议

浏览器与WEB服务器的协议是应用层协议,当前遵循HTTP/1.1,HTTP协议是无状态的协议

客户机与服务器通过请求和响应完成一次会话(Session),每次会话中,双方发送的数据称为消息(Message),消息分为两种:

请求消息和回应消息。

客户端请求消息

客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。

服务器响应消息

HTTP响应也由四个部分组成,分别是:状态行消息报头空行和响应正文

与程序员相关的主要有两个层:传输层应用层

传输层协议负责解决数据的传输问题,传输层依赖更低层的网络层完成实际数据传输,在 TCP/IP 网络协议中,负责可靠通信的传输层协议为 TCP 协议。而网络层一般由网络驱动来实现,普通程序员不涉及;TCP/IP 协议中,网络层的协议为 IP 协议。

1.2 最简单的 Web 服务器

1.2.1 网络插座 Socket

使用 Socket 开发程序时,首先考虑使用的网络类型,主要三方面:

  1. Socket 类型,使用网络协议的类别,IPv4 的类型为 PE_INET
  2. 数据通信的类型,常见的数据报(SOCK_DGRAM)、数据流(SOCK_STREAM)
  3. 使用的网络协议,比如:TCP协议

在一个网络地址上,区分使用协议不同,分配一个数字,称为端口号(port)0~65535

  1. (0~1023)称为众所周知的端口,由 IANA(互联网地址分配机构)控制和分配,特定的网络程序使用。例如,TCP协议使用 80 端口完成 HTTP 协议传输。
  2. (1024~49151)称为登记端口,不由 IANA控制,但 IANA 维护一个登记列表。
  3. (49152~65535)称为动态或私有端口,由普通用户使用。

在.NET中,System.Net 提供网络编程的大多数数据类型以及常用操作

IPAddress 类表示一个 IP 地址

IPEndPoint 类表示一个 IP 地址和一个端口号的组合,称为网络的端点

System.Net.Sockets 命名空间中提供了基于 Socket 编程的数据类型

Socket 类封装了 Soket 的操作

常用:

Listen: 将 Socket 置于侦听状态,并设置等待队列的长度。

Accept:为新建连接创建新的 Socket。

Receive: 接收来自绑定的 Socket 的数据。

Send: 将数据发送到连接的 Socket。

1.2.2 基于 TcpListener 的 Web 服务器

为了简化基于 TCP 协议的监听程序,.NET 在 System.Net.Sockets 命名空间中提供了 TcpListener 类 ,使用它,在构造函数中传递一组网络端点信息就可以准备好监听参数,而不需要设置使用的网络协议细节,调用 Start方法后,监听开始。AcceptTcpClient 方法阻塞进程,直到一个客户端的连接到达经停气,这个方法返回一个代表客户端连接的代理对象,类型为 TcpClient,可以通过它与客户端进行通信。

1.2.3 基于 HttpListener 的 Web 服务器

为了进一步简化 HTTP 协议的监听器,System.Net 提供 HttpListener类。提供一系列相关对象封装 HTTP 的处理工作。这个类使用 Http.sys 系统组件完成工作,所以在 Windows XP SP2 或者 Server 2003 以上操作系统才能使用。(废话了,在用 WIN 2000 的在下佩服)

1.3 进入 ASP.NET

.NET中,程序集管理的最小逻辑单位为应用程序域(AppDomain),对.NET程序来说,可以动态加载程序集到应用程序域中。但是,加载之后的程序集不能单独卸载,只能以应用程序域来整体卸载。应用程序域提供四个重要的机制:

  • 隔离
  • 卸载
  • 安全
  • 配置

ASP.NET将网站应用程序寄宿在一个独立的应用程序域中,便于管理。虽然可以通过 System.AppDomain 可以创建自定义的应用程序域,但是,ASP.NET 在 System.Web.Hosting 命名空间中定义更加方便的辅助类,以协助程序员创建寄宿 Web 服务器程序所涉及的应用程序域并设置参数。

由于我们的应用程序将与 Web 应用程序运行在不同的应用程序域中,涉及跨域问题。.NET中跨域访问的类必须继承自 System.MarshalByRefObject,这样我们的管理程序将得到一个远程对象的代理对象,通过这个代理对象来访问 Web 应用程序域中的对象。

1.3.1 Web 应用程序域

ApplicationHost 类的静态方法 CreateApplicationHost 可以帮助我们非常简单的创建 Web 应用程序所需要的应用程序域并设置参数。

1.3.2 不使用 GAC 和 bin 加载 Web应用程序域

1.3.3 默默无闻的工作者对象 HttpWorkerRequest

准备用于处理的请求,必须封装为 HttpWorkerRequest 类型的对象,这是一个抽象类,定义在 System.Web 命名空间中

Public abstract class HttpWorkerRequest

通过这个类的实例,必须提供关于处理请求所需要的信息,以便服务器处理请求。

1.3.4 Web 应用程序的运行时 HttpRuntime

System.Web.HttpRuntime 类是整个 ASP.NET 服务器处理的入口。

1.4 对象化的 HTTP

1.4.1 请求参数的对象类型 HttpRequest

对于每一个请求参数,HttpRuntime 创建一个类型为 HttpReqeuest 对象实例,在System.Web 中。

这个类定义大量属性,表示关于 HTTP 请求参数。这些参数来源于 HttporkereRequest 。

1.4.2 处理回应的对象类型 HttpResponse

1.4.3 辅助的常用工具类 HttpServerUtility

1.4.4 编码与解码

1.HTML

HtmlEncode 编码,HtmlDecode 解码(一般浏览器完成)

2.URL

URL 串只应该出现 ASCII 字符。

UrlEncode 方法用来对URL 串进行编码

3.URL Path

UrlPathEncode 仅仅编码 URL 的 Path 部分

4.UrlToken

UrlTokenEncode 用于在 URL 中以字符串形式传递一个字节数组的时候使用

1.4.5 浏览器类型

在ASP.NET中,以 HttpBrowserCapabilities 类型对象的形式,通过 HttpRequest 提供给开发人员。

Public HttpBrowserCapabilities Browser { get; set; }

时间: 2024-09-29 18:26:27

1.网站应用程序 - 《APS.NET本质论》的相关文章

IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)[转]

IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案) 对于IIS网站,大伙用的比较多,就不啰嗦了.   今天和说说大伙比较少使用的"IIS应用程序”和虚拟目录的区别及高级应用场景,文件分布式存储方案. 1:IIS网站: 一个网站,基本就是一个站点,绑定N个域名,绑定N个IP,然后设定一个应用程序池,基本就跑起来了,一个网站可以新建无数个应用程序和虚拟目录. 一行就带过了,大伙都懂,不多说. 2:应用程序(同一域名下程序的独立开发,独立部署的最佳应用策略): 我们发现,IIS网

WebSite网站项目与WebApplication网站应用程序的区别

WebSita:是动态编译的不需要自己手动去生成,保存后可以马上的看到改变后的效果,这个也是WebSitar的主要优势.它其实就是创建一个文件夹而已,可以把这个文件夹当做一个站点来处理.WebSita没有命名空间(注:命名空间的作用就是用来确定重名的类),所有的类都必须要放在app_code目录文件夹中. WebApplication:需要手动生成解决方案,可以将网站拆分成多个项目以方便管理,更强大的代码检查能力,并且检查策略受到源代码的控制. 总结:WebSita网站适合练习使用,无法适用于大

第一章 网站应用程序

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

打造现代化网站应用程序(繁体中文视频)

打造現代網站應用程式 https://channel9.msdn.com/Series/Building-Modern-Web-Apps-CHT 视频可能没法直接看,不过可以下载mp4 只做优秀知识的搬运工

Windows 10 Technical Preview 10041 使用 IIS Express 运行网站应用程序异常

在 Windows 10 中使用 Visual Studio 2013 Ultimate with Update 4 开发网站,9926 的时候还好好的,升到 10041 就不能调试了: “System.Runtime.InteropServices.SEHException”类型的未经处理的异常在 未知模块. 中发生 其他信息: 外部组件发生异常. 托管调试助手“FatalExecutionEngineError”在“C:\Program Files (x86)\IIS Express\iis

微信小程序来了,整理微信小程序学习教程网站

第一,首先菜鸟教程  网址:http://www.runoob.com/ ps: 菜鸟教程(www.runoob.com)提供了最全的编程技术基础教程, 介绍了HTML.CSS.Javascript.Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识.菜鸟教程(www.runoob.com)提供了最全的编程技术基础教程, 介绍了HTML.CSS.Javascript.Python,Java,Ruby,C,PHP , MySQL等各种编程语言的基础知识. 同时本站

由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例

/”应用程序中的服务器错误. 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭. 堆栈跟踪: [SqlException (0x80131904): 由于检索用户的本地应用程序数据路径时出错,导致无法生成 SQL Server 的用户实例.请确保该用户在此计算机上有本地用户配置文件.该连接将关闭.] System.Data.SqlClient.SqlInternalConnection.OnErro

网站应用服务器性能优化方案总结

html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption

【转】关于C++程序的编码问题

引用自:http://blog.chinaunix.net/uid-26790551-id-3190813.html 我们传统的程序基本都只在Windows或只在Linux下运行,Windows程序使用简体中文GB18030编码,Linux程序则只使用英文,多年以来这些程序运行起来都没有问题. 近年来,随着程序的组件化,部分代码特别是公用组件都需要同时支持Windows及Linux平台,这样就出现了不同程度的编码问题,例如在编译时编译器报错,或者在运行时出现乱码.这些问题都和程序选用的字符编码不