使用ASP.NET 5,一切都被认为是基于选择,应用程序只加载选择的库,这是惊人的.较旧的ASP.NET功能封装在System.Web命名空间中,该命名空间具有构建ASP.NET应用程序所需的一切.将所有未使用的库填充到内存中是一个真正的成本,因此ASP.NET 5方法是选择您需要的内容而不是使用未使用的代码的大型库.
我的问题:
这种选择方法和性能改进是否仅适用于面向.NET CORE的ASP.NET 5?或者,针对Windows上的完整框架的ASP.NET 5是否获得了所有这些不错的功能?
当针对dnx451或dnx46时,它们是否依赖于System.web并且所有未使用的库仍然像旧版本的ASP.NET一样加载到内存中?
据推测,ASP.NET 5每个请求大约需要2kb内存,而旧版本的ASP.NET每个请求占用30kb内存.只有在针对dnxcore50时才能实现这种出色的性能提升吗?或者这也是dnx451/dnx46的情况?
在IIS 7.5+上运行ASP.NET 5 dnx46时,System.web是否仍未加载?(不确定,但我认为IIS和System.web是集成的,如果我错了,请纠正我).
最后,ASP.NET 4.6应用程序和在ASP.NET 5上运行的应用程序(dnx46)之间有什么区别?后者对另一方有什么改进?
有人请为我澄清一下吗?我似乎无法找到这些问题的明确答案.
这种选择方法和性能改进是否仅适用于面向.NET CORE的ASP.NET 5?或者,针对Windows上的完整框架的ASP.NET 5是否获得了所有这些不错的功能?
不,ASP.NET 5提供的很大一部分改进也适用于DNX451(也就是"完整框架"版本).Kestrel(用于ASP.NET 5的新"通用"Web服务器)尤其如此,其中大量RPS改进对两个版本都有影响.
当针对dnx451或dnx46时,它们是否依赖于System.web并且所有未使用的库仍然像旧版本的ASP.NET一样加载到内存中?
没有.使用新的托管层System.Web
,即使在使用IIS时也从未加载.
据推测,ASP.NET 5每个请求大约需要2kb内存,而旧版本的ASP.NET每个请求占用30kb内存.只有在针对dnxcore50时才能实现这种出色的性能提升吗?或者这也是dnx451/dnx46的情况?
由于社区在Kestrel所做的出色工作,自第一次测试以来,分配(以及"每个请求的字节数")大幅减少,这对两个版本都有影响.使用CoreCLR更有可能帮助减少托管整个应用程序所需的内存(因为您引用了较轻的程序集),但是对"每个请求的字节数"的影响应该是难以察觉的.
当然,CoreCLR的影响主要取决于你的项目中有多少引用:在大多数情况下,内存增益应该是微不足道的(你有更轻的组件,但由于CoreCLR完全模块化的特性,它们更多众多).
在IIS 7.5+上运行ASP.NET 5 dnx46时,System.web是否仍未加载?(不确定,但我认为IIS和System.web是集成的,如果我错了,请纠正我).
不,由于新的托管层(IIS以前的集成,Helios,用于加载System.Web
,但HttpPlatformHandler不再适用).请注意,IIS不再"托管"您的应用程序:它现在只是充当反向代理.实际上,所有内容都在一个单独的DNX工作进程中处理,由IIS启动和监视.
最后,ASP.NET 4.6应用程序和在ASP.NET 5上运行的应用程序(dnx46)之间有什么区别?后者对另一方有什么改进?
在新堆栈上托管"ASP.NET 4.6应用程序"将是一件复杂的事情(如果不是不可能的话),特别是如果它依赖System.Web
并且不使用像OWIN这样的抽象层(ASP.NET 5提供了与OWIN的兼容层) ).