Project Helios: An ASP.NET OWIN-based Web Host Running on IIS
Microsoft has released a project called Helios, a lightweight OWIN-based web host running on top of IIS.
Helios follows on the steps of Katana, another project announced by Microsoft last summer, which lets .NET web developers to avoid the ASP.NET/IIS monolith by providing them with several independent small components than can be installed, used and managed separately, running on a web host that implements the OWIN specifications.
One of the problems of ASP.NET is its inclusion in the .NET framework, being tied up with the release cycle of .NET which takes several years between major versions, and it is subject to a specific testing and bug fixing process. In order to make the development of web tools more agile and responsive, the ASP.NET team has created a number of smaller components – ASP.NET MVC, ASP.NET Web API – which do not depend on System.Web.dll, have a much faster development cycle, and fixes can be provided on a timely manner. Not only that, but developers can deploy such web applications on custom OWIN hosts or on Katana, which is a reference OWIN implementation.
Helios is a web runtime that runs on IIS, but not the full blown web server from Microsoft, as Rick Strahl explained:
Helios doesn't use System.Web and directly hooks into IIS's native interfaces to provide to base OWIN interfaces and context semantics. It runs entirely outside of the stock ASP.NET Http Runtime environment, bypassing the module pipeline and default ASP.NET runtime processing. … Helios is a very light-weight and short circuited version of a Web host bootstrapped on top of raw IIS. Keep in mind that although IIS and ASP.NET are closely tied together, the IIS core itself is a fairly lightweight and runs entirely in native code. ASP.NET interaction only kicks in if ASP.NET modules or handlers are installed and those are comparatively slow when compared to the native core and native modules.
The idea behind Helios is to provide a runtime that is based on the mature and feature rich environment provided by IIS but without the legacy ASP.NET attachments. Beside that, their goals are to provide “higher density on web servers”, “behavior that mimics self-host more than it mimics web-host” and to “reduce the friction of deploying a web application,” according to Levi Broderick, a security engineer working on ASP.NET. But, they do not attempt to “provide 100% compatibility with existing applications. In particular, Helios projects do not support .aspx or .ashx endpoints or other ASP.NET-isms.”
For development, Helios has the following basic requirements: Windows 8 or Windows Server 2012, .NET Framework 4.5.1, Visual Studio 2012 or 2013. Broderick mentioned their intent to relax “this requirement in a future prerelease,” perhaps enabling developers to use Windows 7 for development. Helios applications can be deployed on Windows Azure or any hosting environment which has Windows Server 2012, .NET Framework 4.5.1 and full trust.
In terms of performance, Helios achieves 2x-3x more throughput than standard ASP.NET in a “Hello World” application, but that cannot be taken as a comparison base between the two web solutions, according to Broderick, because actual applications are much more complex than an introductory one. But, in terms of memory consumption, Helios fares better than System.Web:
In absolute numbers, the Helios architecture allowed our sample application to achieve 50,000 concurrent requests with approximately 1 GB less overhead compared with the standard ASP.NET pipeline. And since the sample application was designed to be a minimum baseline, one can reasonably expect this same absolute number to apply to any non-trivial application as well.
A word of caution: Microsoft is not yet committed to Helios, as Broderick mentioned in a comment:
We might stop working on it and never release it if it turns out that people don't actually want it, if the team is disbanded, if something better comes along, or for a hundred other reasons I can't even begin to guess at. The team isn't interested in making this Azure-only.
Developers can create ASP.NET applications based on Helios directly from Visual Studio after installing the Microsoft.Owin.Host.IIS NuGet package.
Delivering Performance Under Schedule and Resource Pressure: Lessons Learned at Google and Microsoft
Ivan Filho Mar 06, 2014
Andrew Stellman Mar 06, 2014