In some ways, it feels like the dust hasn’t even settled from the release of Visual Studio 2012—where I almost feel like I’m scrambling to find out exactly what Visual Studio 2013 brings to the table. Over the past few days, I’ve been putting Visual Studio 2013 through its paces, and I'm left feeling like the IDE is faster, cleaner, and more responsive. I’ve also found a couple of big new framework improvements that have caught my eye.
Immutable collections are something that caught my eye after running into sage advice from Bill Wagner in his book Effective C#, which I previously reviewed in "C# Book Reviews." In his book, Wagner outlines how dangerous it can be to expose collections to code consumers simply because of how easy it is to inadvertently or even maliciously modify object state and thereby create ugly problems and bugs.
Because I've recently been spending a large amount of time working on multi-threaded code with lots of complex internal state and numerous collections, the notion of immutable collections has become even more attractive. I’m still trying to determine exactly how they work and learn what the pitfalls are for immutable objects. I've started by looking into an appealing convention surrounding the use of immutable objects through the use of several different coding techniques that make use of a With<PropertyName> convention that decreases coding overhead when making changes to immutable objects.
Overall, I like what I’m seeing and figure that some of the techniques proposed can and will save me a lot of future headache and coding. If I understand correctly (which is tough, as I’m neither a licensing lawyer nor am I a 'long-haired OSS hippy'), then it looks like another key aspect of these Immutable collections is that they were recently made available for use on any platform—thanks to some sustained effort on the part of several folks at Microsoft to address some overly-zealous licensing restrictions.
I’m still busy looking into this feature, but some things that instantly grab my attention about ASP.NET Identity are that it supports claims and enables external authentication from services such as, OAuth, Facebook, and Twitter. It also appears to provide improved support for unit testing and better coupling via the addition of IUser and IRole interfaces. However, the biggest reason I’m interested in ASP.NET Identity is that it isn't ASP.NET Membership. In other words, ASP.NET Membership has been around roughly eight years now -- and a lot has changed in those years. More specifically, ASP.NET Identity is made up of several different smaller, pluggable pieces, which lets us handle identity and membership concerns much easier than was possible before, where we had to implement gigantic, monolithic, interfaces for role and membership providers.
What I’ll be most curious to determine is how much work is involved in decoupling ASP.NET Identity from Entity Framework and how hard it will be to use all of the pluggable pieces to build a real signup process. This type of process involves email validation by means of sending registrants an email with a confirmation link instead of taking the typical and overly simplistic photo album approach to sign up and registration that far too many ASP.NET samples and applications have taken in the past.
The Tip of the Ice Berg
Of course, I’ve only touched on two aspects of .NET 4.5.1 and ASP.NET that caught my attention. These are things that I plan on incorporating into some upcoming projects that I’ll be working on. But there really are a ton of additional improvements and benefits.
To that end, fellow ASPInsider Troy Hunt has a nice and high-level review of "Essential Reading for Visual Studio 2013, MVC 5 and Web API 2" benefits and improvements. If you’re looking for a more in-depth review of what to expect from ASP.NET in Visual Studio 2013, then I highly recommend Jon Galloway’s excellent post, "Top things web developers should know about the Visual Studio 2013 release." This blog post is a fantastic overview of not only the ins and outs of what’s been changed or improved, but also provides some great context and background on why these changes are being implemented. Likewise, if you’re curious about new IDE benefits and improvements, then you’ll want to check out Scott Hanselman’s excellent collection of short screencasts showing what’s new in Visual Studio 2013.
In using Visual Studio 2013 over the past few days, I can say that I’ve been impressed with what I’ve seen. Everything just feels cleaner, faster, and more responsive. I did, however, have to turn off CodeLens. The information that's provided is pretty nice, but I just couldn’t tolerate how much space the feature takes up, and it's distracting enough that I completely disabled them within a few minutes. In a perfect universe, the information would be visible only on demand. Overall, I've been quite happy with Visual Studio 2013 and look forward to finding more and more productivity benefits and improvements as I keep working with the IDE.