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
早在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与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的动机,因为我从未成为该组的成员.但是拥有Web服务器主机抽象的优点有很多:
ASP.NET vNext的动机部分在" 入门"教程中的官方ASP.NET vNext站点中列出.简要总结是:拥有一个跨平台,开源,并排,即用即付,与主机无关的平台,用于构建Web应用程序和服务.听起来像一些营销的东西,但这些都是系统的关键方面.NodeJS提供了几乎相同的一组功能,当然,一旦你看到细节,当然有许多实现差异,毫无疑问也有一些更深层次的哲学差异.支持这些功能的动机通常是不言自明的.
请注意,这通常涉及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/
归档时间: |
|
查看次数: |
4437 次 |
最近记录: |