By Jonathan Goodyear
A year ago I wrote about Apple s foray into mobile application development on the iPhone and the iPod Touch (see Web 3.0 and Your Next Mobile Application). At the time, my bet was that Apple and Microsoft would scramble to enable better disconnected scenarios. They have both established a beachhead, but not in the ways that I predicted.
Instead of partnering with Adobe and Google, Apple opted to allow client applications to be installed on the iPhone and iPod Touch (albeit in a very controlled manner via the iTunes store). Client applications can easily store data locally and manage differing connectivity states, so that negated the urgency for a Web-centric solution to the problem; though you re stuck learning Objective C, which is less than ideal.
Microsoft s latest version of Silverlight (version 2, which is still in beta as of the time of this writing) has some support for temporary local storage, which is a partial solution. With Visual Studio 2008, Microsoft has also introduced Synchronization Services for ADO.NET to tackle the Occasionally Connected Applications (OCA) scenario in client applications (for more on OCA visit http://msdn.microsoft.com/en-us/sync/bb887608.aspx).
The more time that goes by, however, the more I wonder whether most mobile device applications even need to tackle the OCA problem. After all, most mobile devices these days are connected to the Internet most of the time. As an example, my company produces a Windows Mobile client application that simply needs a WiFi connection. When I went to the store to pick up some test units, though, I was awakened to the fact that, in what seems like overnight, just about everybody stopped manufacturing Windows Mobile devices that were not also phones (Windows Mobile Classic devices is their technical name, which might have hastened their demise). HP seems to be the only company left that makes them and very few stores carry them (forcing you to order them online).
So, by sheer market forces, almost every Windows Mobile device that is sold today has Internet connectivity built-in that can always be on. iPhones, obviously, also have built-in Internet connectivity. There are a few exceptions, of course, to the always-on nature of Internet connectivity in mobile devices; like when you re in an airplane or in a remote location. You ll have Internet access in even those places soon enough, though. The net of free WiFi is pretty widespread and getting wider every day.
Now that always-on Internet connectivity is becoming so commonplace, it opens the door to storing data in centralized servers. This is known as cloud services, and both Apple and Microsoft are actively pursuing this strategy (Apple through MobileMe, http://www.apple.com/mobileme/, and Microsoft through Live Mesh, http://www.mesh.com). Having all your data available to you in the cloud makes it easy to get access to it from just about anywhere, as well as to easily recover from the loss of a mobile device (which never happens to me).
There will always be applications that will absolutely need to function in a disconnected state (like e-mail), but my feeling is that connectivity is becoming so ubiquitous that unless you are building an application that is an edge case, you are probably better off spending your development budget on other pieces of functionality and leveraging the cloud for data storage. But it s good to know that Microsoft is still actively pursuing better options for those of you who need to build an OCA.
Jonathan Goodyear is president of ASPSOFT (http:// www.aspsoft.com), an Internet consulting firm based in Orlando, FL. Jonathan is Microsoft Regional Director for Florida, an ASP.NET MVP, a Microsoft Certified Solution Developer (MCSD), and co-author of ASP.NET 2.0 MVP Hacks (Wrox). Jonathan also is a contributing editor for asp.netPRO. E-mail him at mailto: [email protected] or through his angryCoder eZine at http:// www.angryCoder.com.