Technologies
So what technologies are we going to use for this thing? Hopefully a little bit of everything, as one of my goals is to use this to learn some new things.
But to start, it will look like this:
- SQL Server 2008
- IIS/ASP.NET 3.5
- LINQ-to-SQL
Moving forward, I’d like to introduce the following technologies at some point, just for fun:
- Entity Framework (EF)
- NHibernate
- Windows Communication Foundation (WCF)
- Windows Workflow Foundation (WWF)
- Silverlight
- ASP.NET MVC
- Microsoft Reporting Services
- IronPython
- F# (eh, why not?)
Some of these may be used to complement what already exists, such as exposing a WCF layer or sprinkling some Silverlight here or there.
Other things may require replacing a whole layer of code, like changing the data layer from LINQ-to-SQL to the Entity Framework. Hopefully I’ll be able to create side-by-side instances of the system running each type of data layer, which would be interesting for comparing the performance vs. development effort of each.
Some things I just want to learn, like ASP.NET MVC and IronPython, so I’m going to try to find a way to get that into the product somehow.
Obviously, very little of this experimentation would make any business sense in the real world, but that’s part of the fun of it. I’ll build out the initial data layer in LINQ-to-SQL because that’s something I already know and have experience with, but then replacing it with NHibernate and/or the Entity Framework will be a great learning exercise, and hopefully to teach me a thing or two about the true pros and cons of each, beyond marketing fluff and fanboy crap. And along the way, I’ll try to post everything I learn on this blog.
Development Tools
As far as tools, I’m using Microsoft Visual Studio 2008 Team Suite, mostly because we already have it through the Microsoft BizSpark program. However, I realize that it’s pretty impractical for most people to purchase Team Suite, so I’ll try to keep everything limited to the basic tools available in the Standard or Professional editions. Since one of my goals is to provide something that other people can learn from (whether it be from my successes or failures), I think it’s important that I stick to tools that are readily available to most developers.
As such, I’ll steer clear of things like Visual Studio testing suite, and I’ll make use of more open source tools like NUnit and WatiN instead.
For databases, I’ll avoid the original Visual Studio database projects (because they are mostly useless), and I’ll avoid the new fancy new Visual Studio SQL Server database projects (because they aren’t readily available to most developers and they are too complicated in my opinion). However, this is still a sticky problem, as I have yet to see a good and free/cheap tool for managing database development. Doug Blystone (co-founder of MMDB and resident SQL Server whiz) has been working on a utility that consolidates a lot of the do’s and don’ts concurrent SQL development that we’ve learned over the years, and we plan to release this very soon. If you find it useful, great; if not, you can at least follow along with everything I’m doing.
Anyway, I’m going to get started on the data model first, so stay tuned.