Helios:一个基于OWIN的运行于IIS上的ASP.NET Web托管框架

微软发布了Helios项目,一个轻量级的基于OWIN的运行于IIS上的Web托管框架。

Helios是微软继Katana之后,于去年夏天发布的另一个项目,通过提供一些可独立安装、使用和管理的,运行于实现了OWIN规范的Web托管服务的小组件,让.NET Web开发者可以绕开ASP.NET/IIS这个庞然大物。

ASP.NET的弊病之一是包含在.NET Framework中,与.NET的发布周期捆绑在一起。后者几年才会发布一个主版本,并且受制于特定的测试和缺陷修复的过程。为了让Web工具的开发更加敏捷且更具响应性,ASP.NET团队创建了大量略小的组件——ASP.NET MVC、ASP.NET Web API——它们不依赖于System.Web.dll,具有更加快速的开发周期,能够及时地修复缺陷。不仅如此,开发者还能将这样的Web应用程序部署在自定义的OWIN托管服务或Katana(一个参考的OWIN实现)上。

Helios是一个运行于IIS上的Web运行时,但并不是完全成熟的微软Web服务器,Rick Strahl解释道:

Helios不使用System.Web.dll,它直接挂(hook)到IIS的原生接口上,提供基本的OWIN接口和上下文语义。它完全运行于普通的ASP.NET Http运行时环境之外,绕开模块管道和默认的ASP.NET运行时处理……Helios是引导自原生IIS的、轻量级短路版本的Web托管服务。请记住,尽管IIS和ASP.NET联系得十分紧密,但IIS内核本身是十分轻量的,并且完全运行于原生代码之上。只有在安装了ASP.NET模块或处理程序之后,才会与ASP.NET产生交互,并且这种交互与原生内核和原生模块比起来是相当慢的。

Helios背后的理念是,基于IIS的成熟且功能丰富的环境(不包括遗留的ASP.NET附件),提供一个运行时。此外,如ASP.NET的安全工程师Levi Broderick所说,其目标是提供“高密度的Web服务器”,“模拟自托管多于模拟Web托管的行为”,以及“减少部署Web应用时的麻烦”。但是,它不会“对现有应用100%的兼容。特别是不支持.aspx和.ashx或其他ASP.NET相关的终结点”。

在开发时,Helios要求以下环境:Windows 8或Windows Server 2012,.NET Framework 4.5.1,Visual Studio 2012或2013。Broderick表示他们会在“未来的某个预览版中放宽这一要求”,可能会允许开发者使用Windows 7进行开发。Helios应用程序可以部署在Windows Azure或任何拥有Windows Server 2012、.NET Framework 4.5.1且完全信任的托管环境中。

在性能方面,对于一个“Hello World”应用来说,Helios的吞吐量比标准ASP.NET多2-3倍。但Broderick认为这并不能作为比较两种Web解决方案的基础,因为实际的应用程序要远比介绍性的应用复杂得多。但在内存占用方面,Helios要比System.Web表现优秀:

在绝对数字方面来看,示例应用在Helios架构下可以达到50000个并发请求,与标准ASP.NET管道相比,能节省大约1GB的内存占用。由于示例应用设计时采用的是最小基线,因此我们有理由相信在其他复杂应用中,也能保持这个绝对数字。

需要注意的是,Broderick在评论里提到,微软还没有提交Helios:

如果人们实际上不需要Helios,或者团队解散,或者有更好的想法,或者有其他想都想不到的各种理由,我们都可能停止工作并且不会发布它。我们可不想让它只能在Azure下工作。

开发者在安装了Microsoft.Owin.Host.IIS的NuGet包之后,就可以直接在Visual Studio里创建基于Helios的ASP.NET应用程序了。

原文英文链接:Project Helios: An ASP.NET OWIN-based Web Host Running on IIS

你可能感兴趣的:(Helios:一个基于OWIN的运行于IIS上的ASP.NET Web托管框架)