C/C++ Users Journal May 2004
In most programming areas, there are one or two books that are considered definitive. For most desktop Windows areas, books by Charles Petzold fill this niche. In the world of COM, Don Box's Essential COM is the one. For Windows CE development, there's Douglas Boling's Programming Microsoft Windows CE.
For Pocket PC developers moving to the .NET Compact Framework, The Definitive Guide to the .NET Compact Framework, by Larry Roof and Dan Furgus, and Microsoft .NET Compact Framework: Core Reference, by Andy Wigley and Stephen Wheelwright, may fill the bill.
Both books begin with introductions to Windows mobile devices and the .NET Compact Framework. In both cases, you're reminded that shoehorning 30 MB of the full .NET Framework into a 1.5-MB Compact .NET Framework means something had to be left out, including a few things you might consider important okay, many things you might consider important. That said, both books make the case that while imperfect, the selection process that narrowed down the .NET Framework into something viable on a Pocket PC or SmartPhone is at least rational.
Both books also discuss user interfaces for small mobile devices. This is a difficult process for developers used to the ever-increasing desktop screen real estate. The Definitive Guide includes a somewhat more detailed, control-by-control explanation of what's in the .NET Compact Framework. On the other hand, Core Reference does a better job of covering important events unique to the Pocket PC; for instance, when forms become inactive. Both books do a good job of explaining how to create a custom control.
In significantly different order, both books cover testing, debugging, and application deploying. I preferred the Core Reference's approach to these topics because, in addition to covering just the creation and customization of the installation, Wigley and Wheelwright better explain details of deploying via the Web or memory cards. In turn, Roof and Fergus cover Help system creation, something not covered in the other book.
Both books cover file and network I/O, including consuming web services and the System.IO namespace, which is excellent in both books. .NET developers with even passing familiarity with the .NET Framework System.IO classes could get up to speed by skimming either examination of I/O and the differences when using the Compact Framework. For instance, unlike desktop operating systems, even if there is more than a single logical device (such as an SD card), disk drive letters are not used.
Networking is an important and potentially confusing topic when using Pocket PCs connected to development machines via ActiveSync. Core Reference does a better job of explaining and offering solutions to the problems associated with this sort of networking, while The Definitive Guide does a better job of covering infrared communications. Both books do a good job of covering the basics of consuming web services, with Core Reference getting the nod for completeness and organization.
Database access is critical to almost any mobile application, and both books cover the basics of connecting to both SQL CE and SQL Server. I was disappointed by The Definitive Guide's coverage of Remote Data Access (RDA), something that can be confusing to set up. While neither book goes into the set up in great detail, the Core Reference does go a little deeper.
An unfortunate fact of life is that programmers using the .NET Compact Framework need to use unmanaged code. Both books cover this topic, but The Definitive Guide deserves special mention for its examination of the Pocket Outlook Object Model (POOM). A 50-page chapter is devoted to POOM, so if you need to interact with Pocket Outlook, keep The Definitive Guide nearby. A cleaner method to get to Pocket Outlook is something I hope Microsoft corrects in future versions of the .NET Compact Framework. The Core Reference contains a couple of chapters covering classes such as String, DateTime, and the collection classes chapters not present in The Definitive Guide.
Overall, the formatting of the Core Reference is more appealing to me. Notes stand out a little better than those in The Definitive Guide, although the code listings in The Definitive Guide seem less intrusive and interrupted my reading less than those in the Core Reference.
Of course, the content of the listings is what is important and this may be the biggest deciding factor for you. Virtually all listings in The Definitive Guide are in VB.NET, and the Core Reference's listings are almost all in C#. The source for the Core Reference is available on the book's web page in both C# and VB.NET. In most cases, competent VB.NET developers can understand most C# code and vice versa, especially in this area where most of the code involves dealing with the framework library. Areas where this may not be entirely true include using P/Invoke, importing DLL functions, and C# casts.
In short, VB.NET developers might be happier with The Definitive Guide, while C# developers might prefer the Core Reference. Still, both books do a reasonable job of covering the .NET Compact Framework.