根据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托管的历史

早在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主机不可知论

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的好处,ASP.NET vNext,并且是主机不可知论者

我无法说出创建OWIN的动机,因为我从来都不是那个团队的一员.但具有web服务器主机抽象的优点有很多:

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

ASP的动机.NET vNext部分列在官方ASP.NET vNext网站的Getting Started教程.一个简短的总结是:拥有一个跨平台、开源、并行、按量付费的主机不可知平台,用于构建web应用和服务.听起来像是一些营销方面的东西,但这些都是系统的关键方面.NodeJS提供了几乎完全相同的一组特性,当然,一旦你看了细节,当然会有很多实现上的差异,毫无疑问,还有一些更深层次的哲学差异.支持这些特性的动机通常是不言而喻的.

ASP的观众.网

请注意,这是关于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/

Asp.net相关问答推荐

如何从 Azure 上托管的应用服务获取登录用户名?

Web 部署工具 2.1 和 Web 部署 3.5 有什么区别?从 VS 2010 部署需要哪一个?

如何在 IISExpress 上使用带有 localhost 的子域?

在 ASP.NET 中更改错误消息的语言

解析器错误消息:无法加载类型sometype

ASP.NET MVC4 jquery/javascript 包的使用

我应该使用用户名还是用户 ID 来引用 ASP.NET 中经过身份验证的用户

如何在 ASP.NET core rc2 中禁用浏览器缓存?

在 Blazor 中 Select 框绑定

嵌套剃刀模板中的@RenderSection

.Net Standard 2.0 类库是否有通用配置文件?

如何获取正在访问 ASP.NET 应用程序的当前用户?

ASP.NET web.config:system.web.compilation 中的 debug 属性的默认值是什么?

ContentResult 与字符串

ASP.NET 中的嵌套中继器

StyleBundle 索引超出了数组的范围

中继器中的中继器

ASP.NET 邮箱验证器正则表达式

Session.Clear() 与 Session.RemoveAll()

在 ASP.NET 中使用 SecureString 有什么好处吗?