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:
 

  1. 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.
  2. 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.  

Conclusion

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.

Share this article on   LinkedIn Google+

Dominik Pinter

I'm a fan of cloud computing (primarily Windows Azure) and I really like to dig into web application security. My blog is focused on everything related to Kentico, .NET Framework, Cloud platforms and web application security.

Comments

Dominik Pinter commented on

Hi Mohamed,
one of the key things for us in Kentico 9 is MVC support which goes together with cleaning our API to be used more easily with MVC applications. Right now, we don't plan direct support for javascript frameworks as Angular.js but you would be able to easily build web services between this improved API and the client application. Please let me know if I didn't answer your question.

Cheers,

Dominik

Mohamed Rashed commented on

Also we are preparing for a new project (LOB Application) and we are evaluating kentico as a content framework in backend.
can we say Kentico 9 will consider SPA a first class citizen like DNN http://goo.gl/FmXd2W

Dominik Pinter commented on

Hi Sean,
thank you for the comment. I'm happy to see that you are excited about Kentico 9 - we are putting a lot of effort to both CI and MVC and I believe that result will be fantastic.

What I mean by "Less conservative customers can start to create applications in ASP.NET 5..." - the idea is that you will use Kentico for the administration and live site will be totally different application. In the future, Kentico might be more and more administration application and live site could be written using some other technology - ASP.NET 5, React, PHP, ... So yes, we see Kentico as a platform which works perfectly with React or Angular.

Content tree and MVC - Content tree is still there but since the live site in MVC will determine the actual structure you can add all your content under one node.

MVC webpart replacement - of course we are thinking about that. I cannot share any details at this moment but we there will be some equivalent/successor of todays webparts and design tab for MVC in the future.

Sean Wright @ wiredviews.com commented on

Thanks for this detailed look into Kentico's plans for the changes being made in the .net development environment. This was exactly the type of insight I was hoping for and although you can't provide any timelines for the new Asp.Net 5 integrations into Kentico (very understandably) I think it's great that you are planning to move in that direction at a pace that is good for your customers/users.

Looking at the roadmap I am most excited for your improving support of MVC and CI. The changes made to the DataEngine in version 8 were a cool and useful improvement and seeing the progress Kentico has made recently has me looking forward to when version 9 comes out.

When you say "separating the administration and live sites in general." and "Less conservative customers can start to create applications in ASP.NET 5 and use Kentico for administration. " what do you mean exactly?

As MVC becomes more integrated with Kentico are things like the Content Tree still going to be relevant or will they simply change in functionality? Are you working on developing a webpart-like replacement for an MVC approach? Do you see Kentico as an administrator platform working well with front-end frameworks like React and Angular?

We are currently working on a Web Api project that is using Kentico as the backend of the system - I could see this type of setup matching your explanations.

Thanks again for all this information - it definitely helps us figure out how to progress forward in-step with Microsoft and Kentico.