当前位置: 首页 > news >正文

捕鱼游戏网站制作模板中国最新时事新闻

捕鱼游戏网站制作模板,中国最新时事新闻,不锈钢网站建设哪家好,h5素材库前言 马上2016年就要过去了#xff0c;时间可是真快啊。 上次写完 Identity 系列之后#xff0c;反响还不错#xff0c;所以本来打算写一个 ASP.NET Core 中间件系列的#xff0c;但是中间遇到了很多事情。首先是 NPOI 的移植工作#xff0c;移植过后还有一些Bug需要修复时间可是真快啊。 上次写完 Identity 系列之后反响还不错所以本来打算写一个 ASP.NET Core 中间件系列的但是中间遇到了很多事情。首先是 NPOI 的移植工作移植过后还有一些Bug需要修复然后一个事情是一个有关于分布式架构中消息一致性的一个中间件设计开发工作还有就是博客还要坚持写最后就是还有好几本书需要读以及消化学习所以深深感觉到时间不够用。废话不多说了进入主题。 大部分中间件都是要依赖于 HTTP 管道和 HttpAbstractions 提供的上下文的所以有必要先介绍一下 ASP.NET Core 在管道中封装了什么了解清楚之后有助于更高的进阶学习。你看不懂也没有关系对这些概念有一个认识就可以了不需要你精通每一步都具体做了哪些东西达到会用就是我的目的。因为我觉得随着你以后开发的深入对这些东西使用多了之后自然会想了解更多到那个时候你就会去看源码了。 IApplicationBuilder IApplicationBuilder 是应用大家最熟悉它的地方应该就是位于 Startup.cs 文件中的 Configure 方法了吧 public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory){app.UseDeveloperExceptionPage();app.UseStaticFiles();app.UseMvc(); } IApplicationBuilder 就像其名字一样其实很简单就是对内做了一个接口封装对外提供了一个扩展具体来说就是 对内封装了 IServiceProvider ApplicationServices { get; set; }应用程序使用的服务就是ConfigureServices注入的那些。IFeatureCollection ServerFeatures { get; } 工具箱对象下面会提到的。IDictionarystring, object Properties { get; } 横跨各个中间件在他们之间共享数据。 对外扩展了 IApplicationBuilder Use(FuncRequestDelegate, RequestDelegate middleware)注册中间件 还有一个 Build 用来返回管道最终的 HttpContext 状态 RequestDelegate Build(); : 最终的 RequestDelegate 形态 没什么复杂的东西就这几个东西需要了解下面是一个 IApplicationBuilder 的贴图看起来应该会更直观。 那 RequestDelegate 又是什么东西呢 RequestDelegate RequestDelegate 是一个委托是以委托形式对 HttpContext 的封装在 ASP.NET Core 中也是非常重要的一个对象先看一下定义吧。 namespace Microsoft.AspNetCore.Http{    public delegate Task RequestDelegate(HttpContext context); } 为什么说这个对象很重要呢因为在管道中所有的中间件都是直接或者间接的使用到它来做一些功能因为它包装这 HttpContext 的嘛而在Web开发中 HttpContext 的地位又是如此的高接下来就说说 HttpContext。 HttpContext HttpContext 应该是做Web开发最熟悉的一个对象了在这个对象中封装着Http整个管道中的关键对象信息这个对象同时伴随着整个管道中传输也就是会经历整个请求的生命周期所以这个对象非常重要也是学习Web开发的一个基础知识。 与传统 .NET Framework 中的 System.Web.HttpContext 不同的是在 ASP.NET Core 中 HttpContext 是一个抽象类位于 Microsoft.AspNetCore.Http 命名空间下。它有一个默认的实现叫 DefaultHttpContext 位于 Microsoft.AspNetCore.Http 程序集。 我们知道以前的 System.Web.HttpContext 是怎么创建的吧 在传统ASP.NET程序中IIS接收到请求之后会交给 aspnet_isapi.dll 这个程序集程序集启动 ASP.NET 运行环境然后调用 ISAPIRuntime 进行封装封装之后就是一个 HttpWorkRequest 对象了然后由 HttpRuntime将其转化为一个HttpContext。 所以在System.Web.HttpContext中其构造函数为 HttpWorkerRequest namespace System.Web {      public sealed class HttpContext : IServiceProvider, IPrincipalContainer{             public HttpContext(HttpWorkerRequest wr);} } 也就是说其实构建HttpContext所有的信息都是来自于 IIS 传递下来的 HttpWorkerRequest。 现在忘了它吧是的全部忘掉这个时候你又要骂微软了尼玛当年为了面试这个东西不知道背了多少遍。 _ 没办法时代要发展要进步我们也需要不断的学习那在 ASP.NET Core 中没有了 IIS 它的 HttpContext 又是如何生成的呢 构建 HttpContext 所需的信息又怎么来的呢 客官不要着急听我慢慢分解 IFeatureCollection 这里就需要先说一下另外一个比较重要接口了它就是 IFeatureCollection 接口这个接口是干嘛的呢 我们先看一下它的定义 public interface IFeatureCollection : IEnumerableKeyValuePairType, object {bool IsReadOnly { get; }int Revision { get; }object this[Type key] { get; set; }TFeature GetTFeature();    void SetTFeature(TFeature instance); } 看到这个接口的定义应该能够明白其功能了接口继承于IEnumerableKeyValuePairType, object 说明接口是一个键值对的集合我们给接口取个名字吧叫“工具箱”。 有些同学应该猜出来了是的ASP.NET Core中构建 HttpContext 就是所有需要的组件都是来自于 工具箱那么 工具箱 里面都有什么呢可以看到工具箱里面有 IHttpRequestFeature IHttpResponseFeature ISessionFeature 等等还有很多就不一一列举了正是由于这一个一个的工具箱里面的工具最终构建成为了整个 HttpContext 对象。我们来看一下 HttpContext 对象的构造函数 namespace Microsoft.AspNetCore.Http{    public class DefaultHttpContext : HttpContext{        public DefaultHttpContext(IFeatureCollection features)        {Initialize(features);}} } 没错吧有同学可能要问了工具箱里面的这些工具什么时候初始化的呢 先别急我们先看看我们熟悉的 Request 和 Response。 HttpRequest 同样在 ASP.NET Core HttpRequest 也成为了一个抽象类它的默认实现叫 DefaultHttpRequest主要是封装浏览器对服务器的请求的各种数据包括浏览器请求的网址查询字符串数据或表单数据等等... 不一一详细介绍了都是很简单的内容。 HttpResponse HttpResponse 也成为了一个抽象类它的默认实现叫 DefaultHttpResponse主要是是服务器接收到浏览器的请求后处理返回结果常用的一个对象。 ASP.NET Core 管道 是时候该解释一下上面的 工具箱 初始化的问题了我想我用一个图来直接说明管道中的请求再合适不过了下面就是一个 ASP.NET Core 整个服务端构建管道一个流程图 从图中可以看到RequestDelegate 携带着 HttpContext 一路经过各种 Server、Hosting 等最终到达了由 IApplicationBuilder 构建出来的 Application pipeline 这一管道区域然后再经过各种中间件处理最终构建出来了我们的 Response而我们的工具箱 也正是在这个过程中变得 “ 饱满 ” 起来。 有一个需要知道的知识点就是中间件是怎么样添加或者叫注册到管道中的呢 又是如何被应用起来的呢 上面的图可以看到橙色区域的 Application pipeline 是由 IApplicationBuilder 构建起来的。也就是说我们可以在 IApplicationBuilder 做点什么东西来添加我们的中间件。 是的 IApplicationBuilder 暴露出来了一个 IApplicationBuilder Use(FuncRequestDelegate, RequestDelegate middleware); 方法来让我们注册中间件也就是说位于 Startup.cs 文件中的 Configure 方法。 那么又是怎么样应用起来的呢 IApplicationBuilder 在 Hosting 中有一个 IApplicationBuilderFactory 的对象Hosting 通过这个Factory 创建之后就会传递到了 HostingApplication 对象中最后由 IWebHost 对象调用 IServer 对象的Start 同时把 HostingApplication传递进去来最终启动服务端。可以对照上面的图理解一下。 总结 在本篇中我们知道了 ASP.NET Core Http 管道中的几个对象他们分别是 IApplicationBuilder , RequestDelegate , HttpContext , HttpRequest , HttpResponseIFeatureCollection 等然后也知道了他们之间的关系接着我们通过一个管道流程图知道了他们的调用关系也知道了如何向管道中注册中间件。 原文地址 http://www.cnblogs.com/savorboard/p/aspnetcore-http-pipeline.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://www.yutouwan.com/news/467457/

相关文章:

  • 西安企业建站素材wordpress嵌入php代码
  • 做网站建设的电话销售申京效率值联盟第一
  • 分销网站怎么做龙岩网站设计理念
  • 免费免费建网站图片制作成视频
  • 恒通建设集团有限公司网站关于公司网站改版通知
  • 公司网站建设的建网站 服务器需要安装 tomcat
  • 濮阳建网站网红营销的优势在哪里
  • 网站开发样板十大新媒体平台有哪些
  • 新建的网站怎么上首页网站开发行情
  • 常德网站建设费用高密专业网站建设价格
  • 南宁自助建站模板下载网建公司转型
  • 网站制作具体步骤千锋教育培训多少钱
  • 宁波做百度网站哈尔滨开发网站
  • 做视频网站要什么主机邯郸网络名称
  • 笔记本电脑可以做网站服务器中国交通建设监理协会网站打不开
  • 长沙优化网站哪家公司好百度高级搜索技巧
  • 有哪些网站可以做h5html5网站网址
  • 网站结构图怎么做科技公司的网站
  • 自贡网站推广万户网站建设
  • 电气工程专业毕业设计代做网站wordpress搭建拒绝访问
  • 工厂做网站官方网站的英文
  • 做网站还需要服务器吗网站架构设计师待遇怎么样
  • 网站开发技术基础教程wordpress登录开发
  • 深圳网站建设制作公司排名怎么查网站做404页面没
  • 山东天狐做网站cms百度云网盘资源分享网站
  • 给周杰伦做网站怎么做网页制作鼠标点击导航项时下拉显示
  • 做动效的网站梧州网站建设梧州
  • 网站侧边栏导航代码c 做网站设计
  • 昆山制造网站的地方河北建设工程招标网官方网站
  • 怎么做网站的动效招投标信息查询平台