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

阅读数:4871 2014 年 3 月 28 日

微软发布了 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

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论