Getting Started With New ASP.Net Project Helios

Introduction

Microsoft has revealed the prerelease of the NuGet Package in 2013 that allows running a managed web application directly on the top of IIS without going through the general ASP.NET request processing pipeline. This was a comparatively event without too much fanfare.

This article provides a basic introduction to the new ASP.NET Project named "Helios". You should have a basic understanding of OWIN and Katana or you can refer to Introduction to OWIN and Katana.

ASP.NET World

In the ASP.NET World the developers are encouraged to follow the coding patterns endorsement that makes the smooth design and deploy the LOB web applications. With the use of new born project frameworks like MVC, Web API and SignalR, the developers can make the more complex applications. The applications developed in these frameworks do not fit easily into the LOB application that made the ASP.NET famous. And while ASP.NET certainly allows writing this style of modern app, it is easy to understood that the framework's perspective patterns do not always lend themselves to this style of application.

You can check out the sample behaviors that make sense when they were first implemented but now they have a big source of complaints:

  • We cannot mix the Windows and Forms Authentication within the same application.
  • The built-in Forms Authentication module silently converts HTTP 401 (Unauthorized Responses) to HTTP 302 (Redirect Responses).
  • Request validation removes the requests that contains '<', '&' or other characters even if your application is handling this correctly.
  • We should not use Task.Wait(), it can lead to deadlocks in the ASP.NET when we use the special SynchronizationContext. 

Why Helios?

In the current scenario, there are various high-level frameworks, like MVC, the Web API, SignalR and so on available for development and the use of these frameworks are very efficient for the development. These are very valuable tools and have a low barrier to entry for most developers and they're deployed completely out-of-band. You can check out the new released updates for MVC and the Web API. SignalR releases the updates periodically. It allows the customers to deploy quickly and even to share hosts.

The System.Web namespace is a part of the .NET Framework and the ASP.NET runtime itself cannot be enhanced quickly. If any developer wants to add a feature to the ASP.NET, the developer must wait for the redevelopment of the entire framework because they are bound with the release schedules of the .NET Framework as a whole. The developer then must also wait for the host to update the .NET Framework version on the server. If any bug occurs, then the wait extends for fixing it.

The core runtime repeats on the scale of years. The occurrence of web technology is much more agile; much more nimble. Finally, its never be able to make the pay-for-pay model for the ASP.NET core runtime. It would allow finally to solve bugs that have been bothering for many years. The ASP.NET core pipeline and the Web Forms processing are completely linked together.

Self Hosting and IIS

A developer can also determine the solution such as self-hosting the application. Yes, it is valid and possible through Katana. But consider all the features that IIS brings; IIS handles the application and also checks the request patterns and frequencies to describe how long the application should run. For better acceptance, IIS allows a built-in user mode cache and can automatically compress response content if it is relevant. IIS also supports the request filtering and the identities of the worker process.

If you are self-hosting the application then you are responsible for the entire service but this is quite an undertaking to redesign and such an endeavor would be error-prone. If IIS exists besides this then we can use the leverage of it for a new host so that we get all of that automatically. Therefore, this is the bottom-line of the "Helios" project.

Objective

The objectives vary, we need to define before to determine the new framework. In  particular:

  • The objective is not set to have a screaming high throughput for some scenarios but instead Helios does in fact perform incomparably better from the ASP.NET pipeline for such scenarios.
     
  • The objective is not set to provide the 100% compatibility with the existing applications. The Helios project does not support the .aspx , .ashx or other ASP.NET -isms.
     
  • The objective is not set to encounter the self-host for the developer mindshare. The developer can choose the hosting environment, such as OWIN, that has their own benefits and drawbacks, if it meets the requirements.

On the other side:

  • The objective is defined to provide the higher density on the web servers. It can be checked on a single application running on a machine by providing a large number of simultaneous requests on a machine. For a shared host, it can be checked by providing more active sites on a single machine.
     
  • The objective is defined to create the Helios framework fully out-of-band. The framework should be able to run without requiring installation as long as the target machine meets the minimum system requirements.
     
  • The objective is defined to diminish the resistance of deploying a web application built on the Helios host.

Prerequisites

There are some prerequisites for working on a Helios Project. They are:

  • Windows 8 or Windows Server 2012
  • .NET Framework 4.5.1
  • Visual Studio 2012 or higher (Visual Studio 2013 preferred but not required)

The web server and web host have the following requirements:

  • Windows Server 2012
  • .NET Framework 4.5.1
  • Full trust

Hosts like Windows Azure Web Sites can already have the requirements given above so that the developers can create and deploy the Helios-based web applications.

Since this application will be hosted in the IIS Server, you need to ensure that the application pool is configured as in the following:

  • The Managed runtime version is v4.0
  • Pipeline Mode: Integrated

Summary

This article described the new ASP.NET Project named "Helios". You can also get the brief introduction and the prerequisites for the system for Helios-based applications. I'll post another article based upon the Helios project. Thanks for reading and Stay Updated.