I'm new to the world of Microsoft programming having been Linux based (or at least Unix) for most of my programming career. For various reasons I am making the move to Microsoft technologies for a new website that I am planning on developing and I have to admit to being somewhat confused.
So as far as I can tell there two popular frameworks on the .NET platform. ASP.NET MVC 5 and ASP.NET Core MVC. It is my understanding that ASP.NET Core MVC is essentially just ASP.NET MVC 6 as it is a complete rewrite of the old system but I've also heard that it doesn't yet support all the features of the older ASP.NET MVC 5 in particular I was told it didn't support SignalR which sounds like an interesting technology although I'm not entirely sure if I will end up using it.
I've tried doing some Google searches to see what exactly is new in ASP.NET Core MVC to see if there are any new features that would be useful to me but apart from the fact that it is now cross platform and can now run on Mac OS X as well as Linux I can't find any actual new features. As useful as it would be to have the option to run on Linux in the future I think I'll be sticking to the Windows platform so that particular feature doesn't interest me that much.
So are there any killer features in ASP.NET Core MVC that should make me prefer to use that version or am I better off using ASP.NET MVC 5 for the foreseeable future?
So what would you do for a new project that might well need to be supported for 5 years or more?
I have been working with ordinary ASP.NET for a long time and had tried to use the new ASP.NET Core recently. I can telly you that I like it way better than the previous. It is definitely a step forward for Microsoft regardless of the fact if it's going to run on Linux or not. I can state this feature as those that were most compelling to me:
app.development.jsonthat is handled in an easy way compared to the annoying
web.configtroubles for different settings on production and development. The same way you can have different files loaded in web based on the environment
web.configfile. You can just go on and load config from various places like json file and override it with environment variables that you will set in you production environment only (which is neat for Azure e.g.).
SimpleInjectore.g. (apart from some nasty injection in filters and attributes), new system almost forces you to use it, so if your colleagues don't like DI for some reason you'll have one more argument for it.
All in all it's the platform of the future from Microsoft in my mind and they keep most focus on it. It's a platform I like to work with as well (so I personally would do new development there if I have a chance if I don't need SignalR right now e.g.). You can say it's like upgrading from a good known petrol car to a Tesla. You have petrol stations and maintenance everywhere easily accessible for petrol cars, but Tesla is the future :)
Microsoft is of course adding all the missing features in the future, hopefully nearest future, so the choice is yours.