ASP.NET MVC 6:新的HttpContext


ASP.NETMVC6主要是关于框架内部的返工,它带来的变化也会影响我们的应用程序。一个重要的改进是新的HttpContext类。在这篇文章中,我将稍微讨论一下这个新类。

为什么选择新的HttpContext?

无论如何都需要新的HttpContext,因为默认情况下,ASP.NET MVC 6没有对System.Web程序集的引用。此程序集中所有需要的功能都移到了新的库中,其中许多功能已经更改或将要更改(可能)。

另一个原因是当前HttpContext的对象图太大。它需要大约30K的内存,而新的实现大约需要2K。这是一个巨大的差异,它使ASP.NETMVC更接近于高性能的Web框架。此外,ASP.NETMVC将与主机无关-我们可以将其托管在不同的容器中。

猜测:Node.js微软方式?

为了服务大量的小API调用,有一个名为Node.js的工具。从…Wikipedia article我们可以读到:

Node.js应用程序设计为使用非阻塞I/O和异步最大限度地提高吞吐量和效率events。Node.js应用程序运行single-threaded尽管Node.js对文件和网络事件使用多个线程。由于Node.js的异步特性,它通常用于实时应用程序,允许应用程序在不需要刷新的情况下更快地为用户显示信息。

尽管ASP.NET MVC有所不同--如果需要,它是异步的。我只关注一些方面,比如小请求的巨大吞吐量。我认为ASP.NETMVC不会与node.js竞争,但当瘦框架在瘦容器下运行并处理小请求时,至少可以模仿类似的东西。

新HttpContext的公共接口

新的HttpContext的公共接口比以前的小得多(这里我比较基本上下文)。与旧的36名公众成员相比,新的成员只有23名公众成员。

Members of new HttpContext

新的HttpContext仅定义了MVC应用程序所需的最低要求。一些新的方法可能什么都不会告诉你,这不是问题-我会在下一篇文章中写关于新东西的博客。现在有一个问题-这个公共接口真的足以节省大约15倍的内存吗?答案是否定的,因为在对象图中,其他一些对象也会被更经济的新对象所取代。

结论

新的ASP.NET MVC有许多内部更改,使其独立于托管容器,并将我们引向更薄、更高性能的Web框架。当前的应用程序可能会面临一些更改,迁移到下一版本的ASP.NETMVC肯定会带来代码更改。我们实现的是更好的应用程序性能,并有可能在我们想要的几乎任何地方运行它们。

相关帖子

邮报ASP.NET MVC 6: New HttpContext最先出现在Gunnar Peipman - Programming Blog