For any of my fellow developers on the Microsoft technology stack, you’ve probably heard about the big changes coming to the .NET ecosystem. The .NET framework itself is going through a big revitalization project, and one of its biggest frameworks is certainly not immune to some much-needed change.
I’ll skip over listing and detailing some of the bigger changes, which have been very succinctly described by others (see http://stephenwalther.com/archive/2015/02/24/top-10-changes-in-asp-net-5-and-mvc-6 for a great rundown) and instead talk about the impact this is going to have — at least from my team’s perspective — as a means of providing insight into some of the challenges and changes that this will bring.
Be Prepared for a Mentality Change
Let’s stray from ASP.NET and even .NET itself for a second and talk about the “new” Microsoft. In many ways Microsoft, for better or worse, has retained its reputation and the monopolistic company seeking to “embrace, extend, and extinguish” in every market they enter. In my eyes, that Microsoft is dead. Under the new leadership of Satya Nadella the organization is taking massive strides to be a company that works with the technology ecosystem rather than trying to dominate the technology ecosystem.
This has permeated throughout the organization. We’ve seen it trickle down to the .NET world. Did you ever think you’d see a Microsoft product on GitHub? Several key .NET projects have been open-sourced. The new compiler platform, ASP.NET 5, EntityFramework are all open source. With NuGet acting as a package manager it’s now easier than ever to use 3rd party libraries in our code. The mentality of a .NET developer is no longer to simply “do it the Microsoft way”. We have to be ready to embrace and accept 3rd party frameworks across our entire codebase, from projects like Ninject and Automapper to AngularJS and Grunt. Sure, Microsoft may still be offering their own solutions in the same problem domain that these frameworks cover, but more and more we’re seeing them not only make those projects available but actually endorse them.
It’s a new world for Microsoft developers (albeit one that’s existed in the open-source community for eons by technology standards) and we’re going to have to be ready to adapt!
Say Farewell to Visual Basic (with ASP.NET)
Scary times huh? Out of the box, ASP.NET 5 will not support Visual Basic, thought they have promised CLR support for other languages in the future. Personally I think this is long overdue as .NET itself has several non-CLS compliant structures and features simply because at the time of writing the language didn’t support things C# did (a great example being unsigned types). To Microsoft’s credit, VB.NET was a great idea at the time to help enterprise Visual Basic programmers transition, but the ASP.NET world has trended towards C#, seen far more maturity in that language, and now it’s time to change. I still feel like C# is the best language available in its domain today.
Edit: It’s worth nothing that VB.NET is still very much alive and well. Take a look at VB14: http://blogs.msdn.com/b/vbteam/archive/2014/12/09/new-language-features-in-visual-basic-14.aspx
Goodbye WebForms; Long Live MVC
Speaking of transitional technologies, it’s time we said goodbye to Web Forms too. Web Forms is not part of ASP.NET 5, however support will still be provided by targeting .NET framework 4.6 or lower. You’d be hard-pressed to sell any developer on WebForms over MVC (with the exception of some edge cases) in this day and age, but now it seems like Web Forms is seeing a much needed retirement. Though I was never a fan of the technology myself, it did serve its purpose of giving old WinForms developers a way of building applications for the web while hiding them from the scary stateless world they now lived under, but the ecosystem has changed dramatically and unless you’re building an LOB CRUD app with ZERO regard for user experience or future growth, you’re likely best off with MVC.
Will Web Forms apps disappear entirely? I highly doubt it. 15 years from now you’ll still see Web Forms apps in the wild, much in the way that you still see Classic ASP in the wild today. However, if you’re managing an application that’s going to require future enhancement and growth, you’ll definitely want to consider a WebForms to MVC re-write, much in the way that you have (hopefully) done with your Silverlight apps!
One Love – MVC and WebAPI
Perhaps one noteworthy point not to overlook is the fact that ASP.NET MVC and WebAPI are being unified. In previous versions of .NET your MVC and WebAPI controllers were different. They now all inherit from a universal class. While small, I think this is a big change that embraces the fact that more and more controllers in our applications are acting as web services returning JSON results for client side frameworks. This, of course, brings me to my last point:
Client Side MV* is Here
AngularJS, Backbone.js, Ember.js… so many of these new client-side MV* frameworks have popped up lately. While they do add some complexity and learning curve for developers, they do a fantastic job of simplifying front-end development. We now have templating, patterns, two-way databinding, and can now finally express front-end code in terms of our problem domain the same way we’ve done on the server-side. More and more it seems like our ASP.NET controllers are simply feeding JSON results to our front-end frameworks for processing.
I don’t think this is inherently a bad thing. In fact, AngularJS seems like a very cozy new home for WebForms developers who may feel like they’ve been left out in the cold as part of the new changes. However, it’s a new trend in the industry and certainly a new set of technologies and ideas we have to deal with.
The Future is Bright
Fragmentation issues aside, I believe that the future is very bright for us ASP.NET developers. Microsoft is accepting the lay of the land and embracing the open nature of web development for what it is. They’re making substantial changes to their technologies — perhaps the largest they’ve made since the inception of .NET itself — but it’s all in the interest of building a brighter tomorrow. Many legacy features and technologies are being left by the wayside, but it is all in the interest of long-term gain and progress. I can’t fret with a single change they’ve made, and quite frankly I can only hope that you’re as excited as I am to enter this brave new world.
For those who haven’t yet, I strongly implore you to dive deeper. I’ve glanced over several big changes at best and skipped others outright (did you know that .NET is going cross-platform?). Trust me when I say that it’ll be worth the read.