asp.net的核心是啥

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp.net的核心是啥相关的知识,希望对你有一定的参考价值。

HttpContext
该对象是最重要的核心对象。
属性:HttpRequest、HttpResponse、静态属性HttpContext.Current、Server、Cache
补充属性User, Items
User属性保存于当前请求的用户身份信息。如果判断当前请求的用户是不是已经过身份认证,可以访问:Request.IsAuthenticated这个实例属性。
Items这是个字典,因此适合以Key/Value的方式来访问。如果希望在一次请求的过程中保存一些临时数据,那么,这个属性是最理想的存放容器了。 它会在下次请求重新创建,因此,不同的请求之间,数据不会被共享。
如果希望提供一些静态属性,并且,只希望与一次请求关联,那么建议借助HttpContext.Items的实例属性来实现。

HttpRequest,
使 ASP.NET 能够读取客户端在 Web 请求期间发送的 HTTP 值。
在HttpRequest包含的所有输入数据,QueryString, Form, Cookie,请求头,(ip,hostName,MacAddress) ,浏览器的相关信息、请求映射的相关文件路径、URL详细信息、请求的方法、请求是否已经过身份验证,是否为SSL等等。
大量的属性如:IsAuthenticated、HttpMethod 、QueryString、Form 、Files、Cookies、InputStream(输入流)、Headers 、Path、Browser 、RawUrl 、MapPath、FilePath、Url 、Params、ApplicationPath、AppRelativeCurrentExecutionFilePath 、Filter 等等。

HttpHandler、HttpModule
HttpModule检查请求,
HttpHandler处理事件

HttpResponse
向客户端返回结果。所有需要向客户端返回的操作,都要调用HttpResponse的方法。
如:响应头、响应流。
拥有属性:StatusCode 、ContentType、Cookies 、OutputStream(输出流)、Cache 、Filter 等
方法:
AppendHeader()

Write()

End()

Redirect()

TransmitFile()
在服务端发生异常不能返回正确结果时,设置StatusCode属性,比如:Response.StatusCode = 500,可以激活客户端的ajax回调方法:error:function()alert("服务器出错!")
HttpRequest和HttpResponse的Filter,这个属性实现的效果就是装饰器模式,你可以对输入输出流进行装饰。

HttpRuntime,
下有:HttpRuntime.Cache缓存。Page.Cache或者HttpContext.Cache都是对它的引用。
HttpServerUtility
下有:htmlEncode()方法,用于防止注入攻击,它负责安全地生成一段HTML代码。
HtmlAttributeEncode(),它也是用于防止注入攻击,安全地输出一个HTML属性。
javascriptStringEncode(),也是为了防止注入攻击,安全地在服务端输出一段JS代码。
UrlEncode()方法,对url进行编码。
HtmlDecode(), UrlDecode()用于解码。
Execute()此方法用于,获取一个页面或者用户控件的HTML输出时很有用。

HttpApplication
当HttpContext对象创建以后,HttpRuntime将随后创建一个用于处理请求的对象,这个对象的类型就是HttpApplication。
HttpApplication有19个标准事件
BeginRequest,这个事件标志着服务器处理工作的开始。
开始处理请求后,第一个工作就是要验证用户的身份以实现安全机制
通过AuthenticateRequest和PostAuthenticateRequest两个事件处理
AuthenticateRequest   验证请求,一般用来处理取得请求的用户信息
PostAuthenticateRequest   已经获取请求的用户信息
第四个事件AuthorizeRequest触发的时候,表示进行用户权限的检查工作
第五个事件则标志着完成了用户权限的检查工作
如果用户没有通过安全检查,一般情况下,将跳过剩下的事件,直接触发最后一个事件结束处理。
ResolveRequestCache事件标志着检查缓存
PostResolveRequestCache 表示缓存检查的结束。
(这个地方比较特殊,如果有缓存的话,是不是就立即给用户返回结果了呢?)

在ASP,NET中提供了许多处理程序,程序员也可以自定义处理程序,为了处理这个请求,ASP.NET必须按照匹配规则找到一个处理当前求情的处理程。
PostMapRequestHandler事件标志ASP.NET已经获得了这个处理程序对象,HttpContext的Handler就表示这个处理对象。
为了获取用户以前保存的数据,AcrequireRequestState事件给程序员提供了一个切入点,PostAcrequireRequestState 则表示已经获取了用户的数据,可以在处理中使用了。
接下来就是PreRequestHandlerExcute真正开始告诉程序员处理程序就要开始工作了。如果用户的状态已经获取,还有需要在处理程序处理之前进行的工作,就在这个事件中开始吧。
PreRequestHandlerExcute事件之后,ASP.NET服务器将通过执行处理程序完成请求的处理工作,这个处理程序可能是一个Web窗体,也可能是一个Web服务。

处理程序完成后,服务器开始扫尾工作,PostRequestHandlerExcute 通知程序员,ASP.NET服务器的处理程序已经完成。

第12个事件是个重要的节点啊!

ReleaseRequestState事件通知程序员释放在处理程序中操作的特殊数据,PostReleaseRequestState则表示已经释放完成。
如果希望将这次处理的结果缓存起来,以便于在后继的请求中可以直接使用这个结果,UpdateRequestCache 提供了处理的机会。
PostUpdateRequestCache 则表示缓存已经更新完成。
以上16个事件结束了,还剩下三个事件。

17 LogRequest 请求的日志操作
18 PostLogRequest 已经完成了请求的日志操作
19 EndRequest 本次请求到此结束

应用程序域创建完成之后,一个ISAPIRuntime对象被创建,并自动调用它的ProcessRequest()方法。
创建一个HttpWorkerRequest对象,调用ISAPIRuntime对象的StartProcessing()方法,开始HTTP Pipeline,一个HttpRuntime类型的对象被创建,HttpRuntime对象调用ProcessRequest()方法,创建了一个HttpContext对象。HttpContext 对象包含了在编程中非常常见的HttpResponse(返回给浏览器处理过的信息)和HttpRequest(获得Http请求信息) 两个对象。

HttpModule对象:在初始化HttpApplication对象时被初始化,一个HttpApplication 可以有多个HttpModule对象,HttpModule对象的主要职责就是在不同时期把相应的事件注册到HttpApplicatioin事件当中去。比如完成身份验证,授权,操作缓存等。Asp.Net MVC UrlRouteModule路由模块就是重写了HttpModele

HttpHandler对象:在初始化HttpApplication对象时被初始化,一个HttpApplication可以有多个HttpHandler对象,HttpHander负责最终处理Http请求。不同的文件有不同的HttpHander负责处理。Asp.Net MVC MvcHandle完成了最终处理。
参考技术A asp.net的核心应该就是.net Framework框架了。关于框架的具体介绍,你可以百度一下。 参考技术B 编程思想,还有框架,设计思路。 参考技术C 核心?东西很多吧,不同角度有不同的说法,只有学了才知道,不然这问题没意义。

以上是关于asp.net的核心是啥的主要内容,如果未能解决你的问题,请参考以下文章

使用 HttpClient 压缩对 asp.net core 2 站点的请求的最佳方法是啥?

ASP NET 是啥?

asp.net是啥?

ASP.NET和ASP的区别是啥?

ASP.NET是啥

在 ASP.NET 中接受信用卡的最佳方式是啥? (在 ASP.NET 和 Authorize.NET 之间)