ASP.NET 5 (ASP.NET vNext) and Kentico
As most of you probably know, Microsoft is currently working on a new generation of ASP.NET framework called ASP.NET 5. There is plenty of buzz around this new framework and the biggest question for many ASP.NET developers is what needs to be done to utilize it in existing web applications. Many of you have asked us about our thoughts, and when Kentico will start to support it. This blogpost sheds some light on that topic.
What is ASP.NET 5 (ASP.NET vNext)?
ASP.NET 5 (codename ASP.NET vNext) is next generation of ASP.NET framework. It's not just another new version, it is a revolutionary architectural change and major parts of the framework have been rewritten so that they now work in a completely different way. Of course, Microsoft didn't do this just because to have cleaner code, it brings many benefits - better performance, removing the need for compilation, and supporting multiple platforms. Finally, the whole project is now open source, is on GitHub, and distributed through NuGet packages. A great video summary, produced by Scott Hunter, is available on YouTube (https://www.youtube.com/watch?v=b9m256lvYL4). You can also find articles about it on blogs from Scott Gu (http://weblogs.asp.net/scottgu) and Scott Hanselman (http://www.hanselman.com/).
When is the release date?
Microsoft started to talk more about ASP.NET 5 under the ASP.NET vNEXT codename approximately a year ago. According to the framework’s official website (http://www.asp.net/vnext), ASP.NET 5 is currently in preview. The repository (https://github.com/aspnet/home) shows the latest version; called beta, and also that some NuGet packages are even in alpha. However, according to various sources we can expect release in the second half of this year. The exact release date has been not announced yet.
What about ASP.NET 4.6?
ASP.NET 5 is not only version which is in progress. Microsoft is preparing another new version called ASP.NET 4.6 (currently in preview along with ASP.NET 5). This version is an evolution of the current framework and will probably not contain too many ground-breaking changes. We have already tested this version using Kentico and there are only small issues which can be resolved quite easily. My hope is that ASP.NET 4.6 will be supported as part of with Kentico 9, but this will depend mainly on the release that of ASP.NET 4.6.
Putting information pieces together
Now we move to the crucial part of my comments. Does ASP.NET 5 support Webforms? Should you stay on 4.5/4.6 or should you jump into the uncertain waters of ASP.NET 5, and will Kentico support ASP.NET 5 in the future? Unfortunately, I cannot give you clear yes or no answer because the situation is more complicated than that. Microsoft hasn’t given clear answers at this point and I think that they are considering different options internally. Further ASP.NET 5 is still in preview and final product may be very different from its current form. I can give you my opinion based on the research that we have done here at Kentico.
ASP.NET 5 introduces a new component called .NET Core. This is Microsoft’s description:
“.NET Core is a modular implementation that can be used in a wide variety of verticals, scaling from the data center to touch based devices, is available as open source, and is supported by Microsoft on Windows, Linux and Mac OSX (taken from http://blogs.msdn.com/b/dotnet/archive/2014/12/04/introducing-net-core.aspx).”
As the name suggests, it is the core of the new .NET Framework. It is a subset of the framework as we know it today, and it allows the use of the framework in different scenarios and on different platforms. ASP.NET 5 itself is independent on .NET Core but ASP.NET 5, and may use .NET Core as a runtime. I think that this combination will be recommended by Microsoft for the new projects. Both ASP.NET 5 and .NET Core don’t contain either Webforms or System.Web. Furthermore, ASP.NET 5 has a completely different processing pipeline which doesn't contain WebForms life cycle events.
As you know Kentico is an ASP.NET WebForms application, and most of our code relies on System.Web code. We ran a number of tests and results indicated that more than 80 Kentico libraries use System.Web. In fact, making Kentico compatible with .NET Core means that major parts (including whole CMSWebApp application) of Kentico will need to be rewritten.
Kentico is certainly not the only software facing this situation. However, it may not be a significant issue at the end of the day. Microsoft clearly states that they will continue to release full .NET Framework, as we know it today, with Full CLR runtime. The next version of full ASP.NET Framework is version 4.6. This version contains WebForms and System.Web.
Microsoft also states that you can continue to develop Webforms applications, and that they will continue to invest in WebForms improvements. My current understanding is that there will be two branches of ASP.NET framework in the future:
- A new, modularized version of ASP.NET which will be released through NuGet in short release cycles and which will leverage the new functionality immediately. This version should use .NET Core as a runtime and it is not compatible with Webforms. Right now, this version doesn't support anything from System.Web, but some parts can be added there eventually. This version is usually referred as ASP.NET 5.
- A full .NET framework with release cycles approximately once per year. This branch will contain most (if not all) the new features introduced in the modularized version during that year. This version still supports WebForms and System.Web. The more difficult part is that you can create ASP.NET 5 projects and target this full framework. But, since ASP.NET 5 is not compatible with Webforms and System.Web you can only use certain parts of the framework in this combination.
If you are interested in more details of ASP.NET 5, .NET core and Microsoft statements regarding backward compatibility, I recommend these resources:
What does this mean for Kentico?
Right now, you may be wondering: "This is great news, but I want to know more about Kentico!" Here is Kentico’s approach. Right now, we don't want to invest into fully rewriting Kentico to ASP.NET 5 (Core CLR runtime). Although we fully understand the benefits of switching to a completely new version, there are some downsides:
- Existing Kentico projects would be very difficult to upgrade.
- All our clients would need to work with ASP.NET 5, and switch to ASP.NET MVC or ASP.NET Webpages immediately. The majority of our customers today are using WebForms and an investment into learning and implementing different technology can be quite expensive.
- It would be huge resource investment for Kentico, which would mean delivering less in terms of new functionality and improvements in upcoming versions of Kentico.
- ASP.NET 5 is still in preview, so we don’t know what parts of System.Web (if any) will be supported in its final version.
Instead of rewriting Kentico to fit ASP.NET 5, we are investing more heavily in support of MVC (our roadmap is available at: www.kentico.com/roadmap) and in separating the administration and live sites in general. Doing this will allow:
- More conservative customers to use full .NET Framework and stay on Webforms for another few years.
- Less conservative customers can start to create applications in ASP.NET 5 and use Kentico for administration.
Of course, we won’t to stop here. For example, we will start to remove dependency on System.Web in our libraries, so that the DLLs will be compatible with .NET Core and ASP.NET 5. Then, we will start to build separate administration interfaces using ASP.NET 5. This approach will allow us to move incrementally without hurting the existing projects. Of course, there are other alternatives, and we are continually investigating the best options for our users.
I hope this article has helped you to understand the situation and address your biggest concerns. This technology is currently still in a preview format, and the final product may look differently. Because of this, we are currently not planning to make any dramatic changes in the product to support ASP.NET 5. We don't see this wholesale change as smart or necessary at the moment. Microsoft is committed to developing a full .NET Framework with WebForms for next the couple of years. On the other hand, direction from Microsoft about WebForms is clear, and it will become obsolete technology eventually; so we will leverage this transition period to begin making forward-focused steps and continue our history of supporting the latest Microsoft technology when it comes to market.