根据ASP.NET vNext tutorial:vNext is host agnostic . You can host your app in IIS, or self-host in a custom process
有谁能帮助我深入理解这一点,展示当前asp.网络主机和新主机?
根据ASP.NET vNext tutorial:vNext is host agnostic . You can host your app in IIS, or self-host in a custom process
有谁能帮助我深入理解这一点,展示当前asp.网络主机和新主机?
早在2002年,基本上只有一台web服务器供用户使用.NET平台,这就是IIS.几年后,VisualStudio开发Web服务器("Cassini",以前是原始Web矩阵的一部分)作为一个只支持开发人员的服务器出现.但这些最终都使用了这个系统.Web作为应用程序和Web服务器之间的托管层.系统.Web主机与IIS紧密耦合,很难在其他主机上运行.甚至VS Dev Web服务器上的实现也受到了限制,因为它只支持某些功能.因此,对于典型的ASP,仍然只有一个生产质量"主机".NET应用程序,这些应用程序依赖于系统.网状物
快进大约10年,OWIN年成为应用程序和web服务器之间的接口.这允许任何与OWIN兼容的应用程序通过OWIN与具有与OWIN兼容的托管层的web服务器进行通信.微软编写了Katana作为一个OWIN实现,可以承载ASP.NETWebAPI,ASP.NET Signal,以及多个服务器上的许多第三方框架,包括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服务器通信.这种抽象在很大程度上是通过"功能接口"完成的,因此一些服务器可以实现功能,而其他服务器可以 Select 不实现.
在新的跨平台Kestrel服务器中,ASP.NET vNext应用程序可以托管在IIS、IIS Express、您自己的自定义EXE上,毫无疑问,future 还会有更多的主机.
Katana和ASP.NET vNext都不是IIS或其他主机的替代品,尽管它们都有替代的Web服务器.与Katana和ASP.NET vNext相比,IIS支持一些更高级的功能,例如应用程序预热、更丰富的应用程序生存期管理(即当应用程序崩溃时如何操作、控制其使用的内存量以及其他类型的限制)、远程管理等等.
我无法说出创建OWIN的动机,因为我从来都不是那个团队的一员.但具有web服务器主机抽象的优点有很多:
ASP的动机.NET vNext部分列在官方ASP.NET vNext网站的Getting Started教程.一个简短的总结是:拥有一个跨平台、开源、并行、按量付费的主机不可知平台,用于构建web应用和服务.听起来像是一些营销方面的东西,但这些都是系统的关键方面.NodeJS提供了几乎完全相同的一组特性,当然,一旦你看了细节,当然会有很多实现上的差异,毫无疑问,还有一些更深层次的哲学差异.支持这些特性的动机通常是不言而喻的.
请注意,这是关于ASP的受众.NET,它包括从ASP.NET Web窗体、MVC、Web API、Signal、Katana和ASP.NET vNext.这些框架中的任何一个都适用于任何规模的项目,并且应该可以被任何技术熟练的开发人员使用.通过查看使用它们的项目的规模就可以看出这一点.这个网站(StackOverflow.com)部分使用ASP.NET MVC,由一些非常高级的开发人员开发(我猜),但也有许多较小的网站使用相对新手开发的MVC.ASP.NET vNext是大多数相同框架的future 版本,因此它面向相同类型的应用程序和相同类型的开发人员.
有关ASP的更多信息.NET vNext和OWIN,请查看其中一位开发者的博客文章:http://whereslou.com/2014/06/10/asp-net-vnext-moving-parts-owin/