Recently I’ve been asked to do a review of a new published book on Data-Driven .NET Compact Framework 3.5 development.
It is called “.NET Compact Fraework 3.5 Data Driven Applications” by Edmund Tan, which has been released in April 2010.
The book is a pretty good book for developers, who want to start developing .NET Compact Framework Applications with the most recent version. It doesn't refer to Windows Phone 7 development, which is good, as for business applications the .NET Compact Framework 3.5 technology will be still valid for a longer period of time.
The book itself is structured in 13 chapters, and contains a complete lifecycle of 3 applications from design down to deployment.
Therefore it uses a pretty good story around the applications, which are developed here by sample. It gives an insight in thick, thin and smart clients, as well as in architecture with the MVC Pattern.
Working with databases (Oracle and SQL CE) is as well described as the creation and usage of WebServices. Even the topics 'Auto Update' and working with Bluetooth (among other interfaces) are described as well. Not to forget the usage of Sync Services, the book describes the topics Authentication and Encryption as well.
Chapter 7 is all about Best Practices for mobile applications. These topics for beginners are very useful. Unfortunatelly the book has some drawbacks.
Visual Studio 2008 for example is described as a requirement. Unfortunatelly the author doesn't describe, why Visual Studio 2010 can't be used in this scenario. (Visual Studio 2010 doesn’t support any Windows Mobile development. It is meant to be used for Windows Phone 7 development and later)
As well it isn't obvious to the reader, why 2 different database engines get used (Oracle and SQL CE). On the other hand these databse engines are valuable information to the reader, as he get's described how to work with those different platforms.
The described Dashboard application uses a pull mechanism, where it is requesting new data every minute. This isn't a good practice, as in this sample it isn't necessary as well as it is draining the battery. In general battery usage isn't mentioned at all.
The Bluetooth sample just uses a Bluetooth SerialPort. This means, that the user has to manage Bluetooth connectivity by himself. This isn't a real life scenario. By the usage of the 32feet Library, this would have had additional value to the reader and the user.
The described Pluginsystem lacks of security. Showing the basic steps is absolutly legal, but unfortunatelly not a real world scenario.
Datasets as the BusinessObject intermediate isn't a good choice in this book, as the memory usage is increased.
A side not of using Reflection that it is affecting the applications performance an memory isn't mentioned as well.
Creating a full search scenario is good. Unfortunatelly the coding here creates a security hole for SQLInjection, which isn't mentioned anywhere.
Using regular expressions for the search scenario is great, but the author doesn't tell the reader anything about Regular Expressions at all.
While the complete book uses C# code, it isn't obvious, while Chapter 4 suddenly introduces a VB.NET sample.
The salesforce sample describes the usage of Bluetooth and IrDA as interfaces for exchanging data. This would make it necessary, to have both sales persons to be at the same spot. This isn't a real life scenario as well.
All in all the book is a good entry point for .NET Compact Framework development, but lacks in the depth of the provided information and background. Nevertheless, as it lacks in a few mentioned details, this book shall be worth a read for beginners, as the story around the applications gives a good template on how to start with the overall application lifecycle.
If you are interested, you can check out the details (including a free chapter download) here.