In March, when I started to create a new architecture for building mobile applications for Windows Mobile called Windows Mobile Architecture Blueprint, I thought that it would be possible to use the result for a while. I was both right and wrong. I was right about some of the theory and some of the technologies, but this fall (specifically this year's PDC) has changed a lot of things. I therefore realize that it's already time for yet another attempt to create an architecture blueprint. As last time, I will start with the server side (remember, almost no mobile applications live alone), and then work my way all the way out to the Windows Mobile client.
As you may recall from the last attempt, I'm a big fan of the KISS principle. So big, in fact, that this time I have named the architecture after this principle. The reason is that I think it's of absolute necessity that the architecture is as simple as possible (but no simpler, as Einstein said). Otherwise it will not be used, and the whole point of thinking through and implementing an architecture is that someone will actually use it. Some of the other principles that also apply are YAGNI (don't implement it until you really need it) and DRY (learn to master the difficult art of partitioning a system).
Here are some of the technologies and products that will be used in (or suitable for) the architecture:
- .NET Framework - the treasure chest
- C# - my language of choice
- Visual Studio - the worlds greatest development tool
- SQL Server - my database of choice (on both server and device)
- ADO.NET Entity Framework and LINQ to Entities - the way forward on ORMs (for the ADO.NET team)
- ADO.NET Data Services - how to make data access loosely coupled
- WCF - on discussion, this is the RPC of our time
- WinForms/ASP.NET - traditional ways of designing UXs
- WPF/Silverlight - the new way of designing UXs
- Azure/Live services - a new alternative to host data, services, and applications
To get some theory and background to the use of some of the above mentioned technologies, I recommend you read the beginning of the last series (you find links to all the blog posts in the last post). This time, I will focus only on the technologies that changed since the last time, and therefore, as an example I will not talk much about WCF and how to access WCF services from a .NET CF application (covered in parts 3, 7, and 8 in the last series).
Just as last time, this effort will be an open source venture hosted on CodePlex with the name KISS Architecture. This means that you can access the full source code as well as discuss it, come with suggested improvements, etc. As I walk you through the creation of the architecture, I suggest you keep the source code handy to check out more details.
Accompanying the source code will be a series of blog posts starting with this one.