Hi! If you're reading this it means that I've finally finished coding up my blog and have found a friendly hosting service. I started this site as a personal challenge - I love learning new things and explaining things as I learn; doing that so openly should prove to be an exciting new adventure!
I started with these goals:
- To explore .NET Core and ASP.NET Core
- To integrate wtih various tools to provide continuous integration and deployment
- To have fun doing so
- To create a modern and fast blog
ASP.NET Core: A Brave New Framework
This was my main technological take-away. This subject has been written about extensively and I wouldn't want to blog a dead horse so I'll keep it short. And in short: I love it.
Microsoft's decision to break from the old ASP.NET was a revival of innovation. Their company strategy of maintaining backwards compatibility is one reason for their success, but as the feature-set of such a product grows, the old burdens on the new and creative leaps are hampered by the baggage of the past. This is the exciting part of ASP.NET Core; it could be the catalyst for an injection of innovation and new libraries for .NET.
My favourite parts of the new ASP.NET Core have to be the following:
It does not depend on the big black box known as IIS. This is huge. This frees us lowly mortal devs with only so much capacity for XML configuration settings from having to learn about AppPools, about the confusing threading model, about the overly-powerful concepts like handlers and modules. I mean it was all great when you finally understood those things, but most of these features were overkill. Glad to see them in the rear view mirror.
Startup is so quick! In my previous job I worked on a sizeable web application. Few things would wind me up more than making a tiny edit to the code and not being able to edit-and-continue, then having to wait full minutes for IIS to wake up, smell the coffee and finally restart my web site. I've spend lifetimes repeating this process over and over.
Following from above - the self-hosted model can be run on any operating system. The reduced costs for smaller businesses is great - but better is that there is nothing that pumps innovation into a technology like devs working on side projects at home. A reduced buy-in cost helps a lot.
Dependency Injection out-of-the-box. Deciding between libraries can be daunting and the longer the choice takes the more I feel I'm over-engineering things as I am wont to do. Having a simple but powerful in-built dependency injection container allows me to avoid feeling like I've brought a gun to a knife fight, yet keeps that stinking technical debt at bay right from the start.
You can tell I'm slightly off because I just love this logging system. I haven't had much good logging experience with log4net, Debug/Trace or Common.Logging, so this may be my rebellious spirit here, but the way logging just works with zero configuration brings tears to my eyes. The smooth way this feature fits in with dependency injection doesn't hurt.
Honourable mentions include the AppSettings.json model and the separation of content into wwwroot.
_log.LogWarning("Nothing else to say. Blog post terminated");
Join the Discussion
You must be signed in to comment.