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