Last Tuesday, Jeff Fritz (@csharpfritz), a program manager on the ASP.NET team at Microsoft, spoke to the Pittsburg .NET User Group about ASP.NET Core. After the meetup, I had a chance to speak to Jeff, and I asked him what he wished people knew about ASP.NET Core. These are my words, based on the notes I took during our conversation. Here are three things Jeff Fritz wants to get out there about ASP.NET Core:
1. It’s Built on Stuff You Know
The first thing I learned from Jeff’s talk is that my early interactions with ASP.NET Core had a little friction because of missing tools not missing ideas. In other words, I was trying to do a familiar thing (write some ASP.NET web applications) in an unfamiliar way. This unfamiliarity creates the illusion of difficulty, so we can focus on what we do know, and use the asp.net docs website to fill in the gaps.
MVC is still the basic pattern. C# syntax is the same (and getting better all the time). We still have Json.Net. In short, the fact that I had trouble finding my way around the new project layout in Visual Studio is a difficulty that’s both superficial and temporary. The tooling will come, and when it does I’ll learn it. And speaking of tooling:
2. Visual Studio 15 will Help A Lot
Visual Studio 2015 (the current version) shipped before ASP.NET Core was final, but Visual Studio 15 (the new version) will be designed with ASP.NET Core in mind. (Also, VS15 is available in preview.) I think that having well-thought-out menus and templates in the new Visual Studio will eliminate a lot of friction. Visual Studio 15 Preview 5 is already easier to do ASP.NET Core in than the previous tools I’d worked with, and I look forward to seeing the experience move. (Also, aside: Microsoft has been very responsive to feedback about VS15. I asked a question on Twitter about the licensing and received a response within hours; I opened a small bug report and someone starting investigating it within days. Thanks guys!)
(This is a screenshot of using the command line tool, dotnet.exe, to start a blank dot net core application.)
3. Core is Converging with the Framework
This means that the difference in available functionality between different implementations of .NET will go down. Right now, if I want to write some C# that can be used in 2 places, say in a Xamarin Android app and a Windows 10 desktop app, one option is a portable class library. The limitation is that a portable class library is always a subset – the intersection of the features available in each of the targeted runtimes. My portable class library will only have features that are available on both Xamarin Android and Windows 10. The pressure of diverging .NET implementations tends to reduce compatibility between the runtimes.
But the .NET Standard inverts this pressure – it defines a standard that any .NET runtime should meet, and then the implementers of the runtime and libraries on each platform can push to meet that standard. In other words, the runtimes will be converging on a standard, and developers can target the standard, instead of targeting the intersection of diverse and divergent feature sets.
After this talk, I am excited. I can’t wait to start using ASP.NET Core.
Till next time, happy learning!