The code has served me well since I launched in 2006, and can I point out, that was NINE years ago. I have to salute classic ASP for doing a pretty bang up job. The site rarely went down, it was never hacked (apart from a mountain of comment spam) and it was all-in-all, pretty good fun.
But the past couple of years has seen a huge improvement in website coding. It's all so much easier and more fun now, so I figured I might as well rewrite it in ASP.NET and move it to MVC. So here's the full stack of technologies:
- Bootstrap for the front end - fantastic library once you get your head around it
- JQuery for the little ajaxed archive box over to the right
- ASP.NET MVC4 for the back end
- Entity framework for talking to the DB
- SQL Server for the DB
The whole thing was coded using Visual Studio community edition and SQL Server express. Half was written on my desktop, and the other half was written on my MacBook air running a windows 7 VM using Parallels - a process that ran surprisingly well. I synced the code between the two machines using Git Gui, another process that ran surprisingly well.
So what's great about the new technology stack and what's not so great?
Friendly URLs - GoodNice URLs in classic ASP weren't impossible, but they weren't exactly easy. Nice URLs in Webforms was possibly even harder! But in MVC... URLs can be super, super friendly. The routing options are many and super variable, and it's all pretty cool. It's quite fiddly to setup, but it's pretty powerful and very nice. You'll see that each blog entry URL on this site has the format /year/month/title. Easy to setup and makes a lot of sense.
Entity Framework GoodI love the entity framework. For basic CRUD operations it's a life saver. Super easy to setup and use, it's amazing. If you've never had to go down the whole "1 stored proc for each database query" you have no idea just how much time you're saving. For anything more complicated than simple queries I'll be using stored procs (stored procs are ace) but for the basics, Entity Framework is awesome.
What's not so great?
Config Files BadHaven't we learnt enough from the horror that is Java??? I was super happy to move away from Java 10 years ago. It had become XML configuration file hell. The web.config file is great, but boy can it be over-complicated. On top of that a typical MVC project can have multiple web.config files (mine has 3). As far as I know there's no nice easy to read reference for the web.config file format, and I'm always discovering more undocumented "features" that need to be set. (minFreeMemoryPercentageToActivateService I'm looking at you). Please, Microsoft, continue simplifying the web.config file, not complicating it.
NuGet BadOk I'm going out on a limb here. I'm not crazy about NuGet. It does weird things to your project without telling you what it's done. Trying to find the "official" or "right" version of a library is difficult. Trying to figure out dependencies (and dependencies of dependencies) is even more difficult.
Ok end of whinge.
Big thanks to the master of security Troy Hunt for his excellent security scanning tool which I've run the website through.
Are there any other libraries or tools that I should be considering?