IApplicationBuilder.New() 的目的是什么
What is the purpose of IApplicationBuilder.New()
在新的 ASP.NET 5.0 (vNext) 中,启动代码依赖于 IApplicationBuilder
interface. The Use
method is used to add a handler to the builder, while Build
is used to construct the final delegate. But I can't figure out what is the purpose of New
。我一直在挖掘 GitHub,但找不到任何使用它的地方。
有人知道该方法的目的是什么吗?
它似乎在那里分支 [克隆] 原始实例(如 src/Microsoft.AspNet.Http/Extensions/MapExtensions.cs
). There was also a previous MapWhenExtensions.cs
中所示,但它似乎已从 dev 分支中删除。)
我怀疑这是以前设计的产物,它提供了根据环境绑定中间件的能力,而不影响根的配置。事实上它在 IBuilder
被重构为 IApplicationBuilder
之前就已经存在,而且大多数依赖项都在文件中,这些文件已经从 dev 分支中删除,我敢猜测这是旧消息。
当然很难说,因为界面和基础都没有评论 implementation。
New()
创建第二个 ApplicationBuilder
,共享第一个的所有 ApplicationServices
和 ServerFeatures
,但共享中间件的 none。分支扩展 (Map
、MapWhen
、UseWhen
) 在内部使用它来创建新的 'branch'.
您可以在此处找到实现:ApplicationBuilder.cs。
在某些情况下,它在更高级别的框架中也很有用。
例如,MVC Core 中的 [MiddlewareFilter]
属性在内部使用 New()
来执行 MVC 框架内的一段 ASP.NET 核心中间件(即作为过滤器)。 MVC Core 在中间件周围创建一个小管道,将其构建到 RequestDelegate 中,然后通过它运行 HttpContext。就像 ASP.NET Core 对 Startup.cs
.
中内置的 'main' 管道所做的一样
由于这个特性,我们可以从 MVC 内部重用一块通用 ASP.NET 核心中间件。
有关详细信息,请参阅 ASP.NET MVC 核心中的 MiddlewareFilterBuilder.cs。
在新的 ASP.NET 5.0 (vNext) 中,启动代码依赖于 IApplicationBuilder
interface. The Use
method is used to add a handler to the builder, while Build
is used to construct the final delegate. But I can't figure out what is the purpose of New
。我一直在挖掘 GitHub,但找不到任何使用它的地方。
有人知道该方法的目的是什么吗?
它似乎在那里分支 [克隆] 原始实例(如 src/Microsoft.AspNet.Http/Extensions/MapExtensions.cs
). There was also a previous MapWhenExtensions.cs
中所示,但它似乎已从 dev 分支中删除。)
我怀疑这是以前设计的产物,它提供了根据环境绑定中间件的能力,而不影响根的配置。事实上它在 IBuilder
被重构为 IApplicationBuilder
之前就已经存在,而且大多数依赖项都在文件中,这些文件已经从 dev 分支中删除,我敢猜测这是旧消息。
当然很难说,因为界面和基础都没有评论 implementation。
New()
创建第二个 ApplicationBuilder
,共享第一个的所有 ApplicationServices
和 ServerFeatures
,但共享中间件的 none。分支扩展 (Map
、MapWhen
、UseWhen
) 在内部使用它来创建新的 'branch'.
您可以在此处找到实现:ApplicationBuilder.cs。
在某些情况下,它在更高级别的框架中也很有用。
例如,MVC Core 中的 [MiddlewareFilter]
属性在内部使用 New()
来执行 MVC 框架内的一段 ASP.NET 核心中间件(即作为过滤器)。 MVC Core 在中间件周围创建一个小管道,将其构建到 RequestDelegate 中,然后通过它运行 HttpContext。就像 ASP.NET Core 对 Startup.cs
.
由于这个特性,我们可以从 MVC 内部重用一块通用 ASP.NET 核心中间件。
有关详细信息,请参阅 ASP.NET MVC 核心中的 MiddlewareFilterBuilder.cs。