Prepare Yourself for ASP.NET 5 - Part 5 (Framework Versions)
In
Part 1,
Part 2,
Part 3 and
Part 4 of this series I discussed Less, Sass, NuGet, Npm, Bower, Grunt /
Gulp and Application Startup respectively. These parts would have given you some
idea as to what background is needed to begin your ASP.NET 5 journey. In this part I am going to discuss
where exactly ASP.NET 5 fits in the whole picture of .NET framework. Remember,
however, that ASP.NET 5 is still a work in progress. Whatever I mention below
may change in the future releases. My aim is just to make you aware of the big
picture and the role ASP.NET 5 is going to play.
In order to understand the versions involved in the next release of .NET you
need to consider:
- .NET framework versions
- ASP.NET versions
- Web Forms version
- MVC versions
Have a look at the following figure that shows this big picture:

.NET 4.6 and .NET Core 5
Today when you decide to develop a web application you don't need to make any
decision about the underlying .NET framework. This is because there is just one
.NET framework available today. Going forward, you need to give some thought
about the kind of .NET framework you wish to target. Two flavors of .NET
framework will be available - Full and Core. For the sake of this article, I am
going to call the former as .NET Full and the later as .NET Core.
The .NET Full is basically the next version of what we have today. It
includes everything that we use today for building desktop based applications,
console applications and web applications. So, things such as WinForms, WPF, WCF
as well ASP.NET will go into this framework. The version number for .NET
Full is 4.6.
There is another, brand new flavor of .NET framework - .NET Core - that is a
subset of the .NET full. The .NET Core is intended for applications that are
targeted at modern cloud based and cross platform development. As you might have
guessed .NET Core is a lean framework that includes only the essential
components. Using .NET Core you can develop console applications and web
applications. Now, a bit confusing part - Although .NET core is a subset
of .NET Full, its version number starts directly at 5.
ASP.NET 4.6 / Web Forms 4.6
These two flavors of .NET come with their own flavors of ASP.NET - ASP.NET
4.6 and ASP.NET 5. The ASP.NET 4.6 is the next version of what we use today.
That's why I have called it ASP.NET Existing in the diagram. It
includes Web Forms, MVC and Web API. The version of Web Forms included in .NET
Full is 4.6 and is a minor upgrade to the existing Web Forms engine. You can, of
course, use MVC 5 and Web API 2 to build applications using the respective
technologies. Your existing ASP.NET applications should run on .NET Full with
little or no changes. If you decide to ignore ASP.NET 5 and wish to continue
your development using ASP.NET 4.6 then your stack will look like this:

Your ASP.NET 4.6 applications can use Web Forms 4.6 / MVC 5 / Web API 2 and
they will run only on .NET Framework 4.6 (Full). Development using this stack
follows the same model that we use today.
You will find that many people use the term Web Forms 4.6 to mean ASP.NET
4.6. I prefer to use ASP.NET 4.6 because it not only includes Web Forms but also
other items such as handlers, modules and can also run MVC 5 applications.
Additionally, template selection dialog of Visual Studio 2015 classifies the
templates as "ASP.NET 4.6 templates" and "ASP.NET 5 templates".
ASP.NET 5 / MVC 6
The other flavor of ASP.NET (vNext in the figure) is ASP.NET 5. You will be able to develop ASP.NET
5 applications using MVC only (No Web Forms). The version of MVC included in ASP.NET 5 is 6. MVC 6 is a complete rewrite of MVC engine we use today.
Although the concepts such as models, views, controllers and actions remain the
same under the hood MVC 6 is an improved and rewritten engine. Moreover, Web API
(and also Web Pages) is now an integral part of MVC 6 rather than a separate framework as we have
today.
It is important to keep in mind that an ASP.NET 5 application can target
.NET Full or .NET Core depending on your need. This is shown by the
dotted line in the first figure. If you target .NET Full
then your ASP.NET 5 application can use all the features of the framework that you use today. Web applications developed this way are
primarily targeted at traditional server hosted environments. If you target .NET Core your ASP.NET 5 applications can't use all the
features that you use today. This is so because .NET Core includes only bare
minimum essential components. You need to add additional components as NuGet
packages depending on your need. The stack in this case is shown below:

When you use ASP.NET 5 you develop applications using MVC 6 and then target
them at .NET 4.6 (Full) or .NET Core 5 depending on your requirements.
When you see terms ASP.NET 5 and ASP.NET Core 5 used together it simply means that
the former is referring to ASP.NET 5 applications targeting .NET Full whereas
the later is referring to ASP.NET 5 applications targeting .NET Core. The
References folder of Solution Explorer in VS 2015, for example, uses these terms
to group assemblies.
The following table summarizes what we discussed in this article:
Item |
Version(s) |
.NET Framework |
4.6 |
.NET Framework Core |
5 |
ASP.NET |
4.6 - traditional development targeting .NET 4.6 |
5 - cloud optimized / cross platform development targeting .NET Core
5 or .NET 4.6 |
Web Forms |
4.6 - for ASP.NET 4.6 only |
MVC |
5 - for ASP.NET 4.6 |
6 - for ASP.NET 5 (includes Web API) |
That's it! I hope this series has given you some insight into the
technologies ASP.NET 5 applications use. As I said earlier, ASP.NET 5 is still a
work in progress and things can change. However, your existing skills coupled
with the topics discussed in this series will help you to take a plunge into
ASP.NET 5.