In my mobile talks, I always promote a combination of elements that make for the best mobile applications. It's a pretty simple list, but there are reasons for this list.

Here's the developer's list:

  • Windows Mobile 5/6
  • Visual Studio 2005
  • .NET Compact Framework v2 (plus latest SP)
  • Windows Mobile SDK's
  • Mobile Client Software Factory (MCSF)

Sometimes, I get pushback from folks on different pieces of this list. For example, a customer will tell me that they can't afford to upgrade their PPC devices to Windows Mobile. OK, that's a real constraint - but I tell them that they need a plan to get to the WM releases. The enhancements and extra managed code (that's on WM and not in .NETCF) make WM 5 the oldest platform that you should target today. What's the big deal about WM? WM5 added several managed code capabilities on top of .NETCF - but one of the primary ones is SNAPI, or State and Notifications API. I've been pushing WM for over two years now, so let's move on to a more recent topic.

Here's a quick list of reasons for each element:

  • WM5 - SNAPI
  • WM6 - The goodness of WM5, enhancements to O/S, more SNAPI events, and .NETCF / SSCE in ROM
  • VS2005 - great tool
  • VS2008 - some really good additions - I'll point these out in the future
  • WM6 SDK - improved emulators
  • MCSF - do you really have to ask?

If you haven't looked into MCSF, you need to take a look. Thanks to Loke, I had an opportunity to take a deeper look and I really liked most of what I saw. Via Loke's provided Mobility Touchdown Tour, DPE presented a 3 day lab to customers all over the world - and MCSF was the centerpiece.

MCSF was developed by out Patterns & Practices team, and that means something in my book. MCSF is a set of application blocks, architectural guidance, and samples. Built on top of the Software Factory model, architects will like the potential of this.  What I like is that the blocks provide some valuable capabilities.

Here's a quick peek at the list of blocks:

  • Configuration Block
  • Connection Monitor Block
  • Data Access Block
  • Data Subscription Block
  • Disconnected Service Agent Block
  • Endpoint Catalog Block
  • Orientation Aware Control Block
  • Password Authentication Block