- MVC(3) – I have been trying to get around to getting up to date on MVC for years. Ever since I tried and failed to read Martin fowler’s book on design patterns (http://martinfowler.com/eaaDev/uiArchs.html).
Well finally I have got around to it and I love it. Combined with the Entity Framework edmx or code first it is such a great way to work. This is the way, for most sites, the web should be built. No hidden viewstate, no nightmare page load order and code that you have total granular control over. Awesome!!
- Razor view engine – initially it looks dodgy but after a little playing around it’s cleaner and easier to read than traditional asp.net forms. One thing I have learned about Razor is, if it looks messy and hard to read, then you probably have started putting business logic where it should not go.
- Unit testing and TDD with MVC – Combined with Ninject and Moq this is easy. You can directly test your controllers. Compare this to ASP.NET web forms where your controller was, sort of, your code behind. You needed httpContext etc. Now you can test just your controller logic without other webby things clouding the test.
- JQuery – ok so this is not new but im loving it so far.
- NuGet – the NuGet package manager is quite cool. NuGet is a Visual Studio extension that makes it easy to add, remove, and update libraries and tools in Visual Studio projects that use the .NET Framework. When you add a library or tool, NuGet copies files to your solution and automatically makes whatever changes are needed in your project, such as adding references and changing your app.config or web.config file. When you remove a library, NuGet removes files and reverses whatever changes it made in your project so that no clutter is left.
For example if you need to get the latest JQuery libraries into you solution you open Tools > library package manager > package manager console and type:
PM> Update-Package jquery
PM with auto update your JQuery to the correct version. Note that your references inside Views > Shared > _Layout.cshtml (for example) will not be auto updated.