ASP.NET vNext是主机不可知的,它深刻意味着什么?

Amr*_*awy 36 asp.net host asp.net-core

根据ASP.NET vNext教程:vNext is host agnostic . You can host your app in IIS, or self-host in a custom process

能否帮助我深入了解这一点,并展示当前asp.net主机和新主机之间的区别?

Eil*_*lon 65

ASP.NET托管的历史

早在2002年,.NET平台基本上就有一个Web服务器,那就是IIS.几年后,Visual Studio开发Web服务器("Cassini",以前是原始Web Matrix的一部分)作为一个dev-only服务器出现.但这些最终都使用System.Web作为应用程序和Web服务器之间的托管层.System.Web主机与IIS紧密耦合,很难在其他主机上运行.甚至VS Dev Web Server上的实现也受到限制,因为它仅支持某些功能.因此,对于依赖于System.Web的典型ASP.NET应用程序,仍然只有一个生产质量"主机".

快进了大约十年,OWIN作为应用程序和Web服务器之间的接口出现了.这允许任何与OWIN兼容的应用程序通过OWIN与具有OWIN兼容主机层的Web服务器进行通信.微软将Katana写成一个OWIN实现,可以在几个服务器上托管ASP.NET Web API,ASP.NET SignalR和许多第三方框架,包括IIS(和IIS Express),Katana的自主服务器和自定义主机(即在自定义应用程序中运行Katana的主机).还有另一个名为Nowin的OWIN实现应该能够运行与Katana相同的应用程序.这是宿主不可知论的一个例子.

现在快进几年了,还有ASP.NET vNext,它遵循与OWIN非常类似的模型,具有中间件和主机不可知性.ASP.NET vNext也具有OWIN中间件应用程序组件的兼容性层.

ASP.NET vNext主机不可知论

ASP.NET vNext与Katana和OWIN一样是主机不可知的.使用ASP.NET vNext编写的应用程序只知道主机抽象层,例如IApplicationBuilder(以前的IBuilder)接口.应用程序不直接与Web服务器通信.大部分抽象是通过"功能接口"完成的,因此某些服务器可以实现功能,而其他服务器可以选择不执行.

网页寄存选项

ASP.NET vNext应用程序可以托管在IIS,IIS Express,您自己的自定义EXE,新的跨平台Kestrel服务器上,并且无疑将来会有更多主机.

Katana和ASP.NET vNext都不是IIS或其他主机的替代品,尽管它们都有替代的Web服务器.与Katana和ASP.NET vNext相比,IIS支持一些更高级的功能,例如应用程序预热,更丰富的应用程序生命周期管理(即应用程序崩溃时要做什么,控制它使用多少内存,以及其他类型的限制) ,远程管理等等.

OWIN,ASP.NET vNext和主机不可知的好处

我无法谈论创建OWIN的动机,因为我从未成为该组的成员.但是拥有Web服务器主机抽象的优点有很多:

  • 可以相对容易地在主机之间切换 例如,在只能以最小权限运行的仅开发服务器上本地运行是很常见的.然后在部署到生产时,可能会使用IIS等功能更全面的主机.但是,IIS需要管理权限才能安装,而不是每个人都有自己的工作站.
  • 可以存在更多托管选项.由于ASP.NET在IIS上的紧密依赖性,当天可能只存在一个主机,因此其他主机实际上没有"市场".
  • 通过使用内存中的测试主机,可以更容易地编写某些类型的测试.这经常用于测试Web应用程序的整个堆栈,但没有任何网络调用.

ASP.NET vNext的动机部分在" 入门"教程中的官方ASP.NET vNext站点中列出.简要总结是:拥有一个跨平台,开源,并排,即用即付,与主机无关的平台,用于构建Web应用程序和服务.听起来像一些营销的东西,但这些都是系统的关键方面.NodeJS提供了几乎相同的一组功能,当然,一旦你看到细节,当然有许多实现差异,毫无疑问也有一些更深层次的哲学差异.支持这些功能的动机通常是不言自明的.

ASP.NET的受众

请注意,这通常涉及ASP.NET的受众,其中包括从ASP.NET Web窗体到MVC,Web API,SignalR,Katana和ASP.NET vNext的所有内容.任何这些框架都适用于任何规模的项目,并且任何合理技术的开发人员都可以使用.通过查看使用它们的项目的大小可以明显看出这一点.这个站点(StackOverflow.com)部分使用ASP.NET MVC构建,由一些非常高级的开发人员构建(我假设),但是有很多小型站点使用由相对新手构建的MVC.ASP.NET vNext是大多数这些相同框架的未来版本,因此它针对相同类型的应用程序和相同类型的开发人员.

更多信息

有关ASP.NET vNext和OWIN的更多信息,请查看其中一个开发人员的博客文章:http://wherelou.com/2014/06/10/asp-net-vnext-moving-parts-owin/