One of Microsoft's most consistent, oft-iterated promises is that if you take the time to learn its flagship Visual Studio developer suite, then you can take the skills you learn and apply them to a wide variety of other situations. For example, if you're a developer who uses Visual Studio 2005 or 2008 to create desktop or Web-based .NET applications, then you're someone who can branch out with the knowledge you already have to target different, but related platforms such as smartphones and PDAs. You know the .NET Framework and your favorite languages, the argument goes; all that's required is to familiarize yourself with the different namespaces and learn the nuances of the particular platforms you're interested in targeting. This is especially true if you're a .NET developer who programs primarily in Microsoft's signature .NET programming language, C#.
It's not just your development language you can leverage, either. Other Microsoft technologies supported on the Compact Framework include a mobile version of ASP.NET and a special version of SQL Server for compact devices. That's not all: You might be pleased to learn that many of the third party vendors that provide tools for the full .NET Framework also provide tools for mobile developers.
Knowledge of the full .NET Framework is a good start if you're interested in targeting the Windows Mobile platform, but you should also be aware of some important resources and caveats. I'll walk you through both, explaining where you can find the necessary software development kits to begin programming mobile devices and point you at the wealth of Microsoft-related resources available, including the official Windows developer blog, a special tutorial on ramping up with Windows Mobile, links to the official forums, and more. Finally, I'll touch on one of the ways you can monetize your understanding of Windows Mobile by creating applications for Microsoft's Windows Marketplace for Mobile, an online store that Microsoft will be launching later this year.
The Windows Mobile developer group has a page that points you to everything you need to start programming Windows Mobile devices.
You can download either the Windows Mobile 6 Professional Software Development Kit or the Windows Mobile 6 Standard Software Development Kit here. You can develop Windows Mobile applications on any of three platforms: Windows Server 2003, Windows XP, and Windows Vista. All three platforms require that you also install Visual Studio 2005 or later, as well as the Microsoft .NET Compact Framework v2 SP2. Windows Server 2003 and Windows XP also require that you have ActiveSync 4.5 installed; Windows Vista requires that you install the Windows Mobile Device Center for synchronizing data. Note that you must use Visual Studio 2005 Standard Edition or higher; you cannot develop applications for Windows Mobile devices using Express versions of Visual Studio at this time.
Microsoft also released the Windows Mobile 6.5 Developer Toolkit (DTK) in June 2009. The 6.5 DTK ships with emulators, gesture APIs, and article samples for developing Windows Mobile 6.5 applications. Note that the underlying requirements haven't changed: You must have a non-Express version of Visual Studio 2005 or later, as well as either the Windows Mobile 6 Professional SDK or the Windows Mobile Standard SDK installed on your system.
The mobile device API subset
For obvious reasons, the resource-constrained Windows Mobile platform doesn't include every feature you'll find in the full Framework. According to a document on MSDN, the .NET Compact Framework implements approximately 30 percent of the full .NET Framework. That's a significant chunk of the .NET Framework that Microsoft has excised, and it isn't hard to drill down on the .NET Framework Class Library and find significant areas that aren't supported in the Compact Framework.
The class library viewer displays a small PDA-style icon next to methods, properties, and other objects in the .NET class library that are implemented in the .NET Compact Framework (see Figure 1); it's also possible to use topic filters from within Visual Studio to find the subset of classes specifically part of the .NET Compact Framework. Specific areas not supported in the .NET Compact Framework include remoting and code access security, among other features.
Extending desktop apps
One common mobile scenario is to take an existing desktop app and extend it to smartphones and/or PDA-style mobile devices. For example, you might want to take your sales contact manager and make it available on a mobile device. As a .NET developer, you might be excited about being able to use your knowledge of the Framework, SQL Server, ASP.NET, and other technologies with mobile devices.
And that's all good. However, many developers conflate the promise of leveraging their skills with being able to port existing applications whole (or close to it) to the .NET Compact Framework. Unfortunately, the Compact Framework is a subset—and a small subset at that—of the full Microsoft .NET Framework. You cannot simply take a desktop application built against the full Microsoft .NET Framework that you're already using and reference that project from a mobile device project.
Instead, you should begin by creating the user interface for the platform you are targeting, whether it's for smartphone or other device, consider what business logic you can repurpose, and proceed from there. It is unlikely that you would want to port a business app directly to a mobile device as-is, anyway. As a developer, you need to give careful consideration to the overall architecture of your application, paying particular attention to which aspects of a given app need to be on the mobile device. For example, you need to consider which elements of the app need to be always available (and thus implemented locally), which functions of the app can be performed remotely, what data needs to be stored remotely and on the device, and so on.
There are many resources available for would-be Windows Mobile developers. It should come as no surprise that many of these resources are available from Microsoft, and I'll cover several of those here.
A good starting point is Microsoft's Getting Started page for Windows Mobile development. In May 2009, Microsoft Learning posted a "RampUp" series for Windows Mobile development. If you're not familiar with this series, Microsoft describes its RampUp series as "a free online learning program that helps developers to acquire skills in specific technologies and development areas." Using RampUp requires a Windows Live ID; you also need to fill out a survey similar to what you might fill out when you sign up for a controlled magazine.
Microsoft also sponsors a moderated Windows Mobile development forum and a moderated Compact Framework development blog. Obviously, you're not guaranteed a response if you post questions at such forums, but you can read related questions and answers that other developers have posted and received.
Finally, you can keep abreast of what's new in Windows Mobile development a blog that is maintained by the people who create the tools for this technology, and provides frequent updates on significant developer issues; new developer tools, including free resource kits for developers; and regular posts about upcoming versions and technologies related to Windows Mobile development.
Sell your apps online
One of Microsoft's most ambitious goals for Windows Mobile is to establish a marketplace for Windows Mobile apps. Windows Marketplace for Mobile follows the model of Apple's iPhone application store and will be part of an increasingly crowded market segment that also features similar efforts from Google and Research in Motion.
Microsoft's store will feature full support for Windows 6.5 devices, which are expected to launch in the Fall of 2009. At the time I write this, Microsoft has committed only to provide support for Windows 6.5 devices and applications at its new online store. Note that Microsoft has an existing online store for mobile applications, but its aim is substantially different from that of the announced store. The existing store features select applications from key partners, and directs customers to third-party sites for downloads. Windows Marketplace for Mobile aims to provide a one-stop location for discovering, purchasing, and downloading Windows Mobile applications.
What makes this new store of particular interest to developers is that it represents a chance to monetize your investment in Windows Mobile by creating apps for the store. Microsoft is offering developers 70 percent of the revenue for apps purchased at the store. Participating in this store requires putting up a $99 annual registration fee, plus $99 per application you submit for certification. Microsoft has announced a promotion intended to drum up interest in the program: If you register to participate in the program before the end of 2009, Microsoft will give you five free application submissions with your initial registration. You can learn more about this program here. Note that Microsoft will let you post both free and commercial software on this site, but all applications must undergo the certification process before they can be hosted on the site.
.NET developers interested in programming for the Windows Mobile platform have many opportunities to leverage their knowledge in ways that can save them a lot of time and money. However, you should be aware that what you're leveraging is your knowledge of the Microsoft platform and how it works. You should not assume that you'll be able to port your existing applications or code to a mobile platform without revisiting your basic architecture.
That said, the resources, links, and caveats I've detailed, along with your knowledge of the .NET Framework, can help you assess the potential benefits of programming for the Windows Mobile platform.
About the author
Patrick Meader has been covering the Windows development as an editor, analyst, and author for more than 13 years.