Creating mobilized software solutions
Visual Studio NET Web Services, Mobile Software Application : Mobile Software Initiatives (MSI) is a new model for developing client/server or n-tier applications. As the latest advances in mobile PC technology become more prevalent, an ever-increasing number of users are choosing to use their laptops as their primary computers. Even those that prefer desktop computers want to remain productive on the go. Therefore, the primary goal of MSI is to allow users to remain productive without an active connection to the server. Read this article to learn more.

by Devu Pandit and Justin Huntsman. Intel Corp.

The Mobilized Software Initiative (MSI) is a network-based application architecture that allows an end-user to continue working regardless of the state of his or her connection. An occasionally connected application should be able to detect when a connection is lost or becomes unreliable. In these situations, the application should transparently switch into an offline mode that allows the users as much functionality as is reasonably possible. Users should be able to keep working without interruption as they move in and out of network range, and as the quality of their connection improves and degrades.

Architectural decisions
Although the goal for all occasionally connected applications is the same—to provide an experience that lets users continue working even when a connection fails—the methodologies to accomplish this goal can vary significantly. This paper presents some of these methodologies, using an Intel reference application called Mobile Reference Application as an example.

Designed around the scenario of a real-estate agency, Mobile Reference Application allows real estate agents to upload and download property information between servers and mobile client devices. Mobile Reference Application requires the following software on a developer machine:

  • Internet Information Server
  • Microsoft Visual Studio .NET 2003
  • Microsoft SQL Server
  • Web Service Enhancements for Microsoft .NET 1.0 (SP1)
  • Windows Media Player 9 Series
  • DirectX 9.0a Software Development Kit
It should be noted that the methods presented in this paper aren't necessarily the only ways to create an MSI application. Indeed, depending on the business requirements, technologies used, and even developer preference, there are many ways to create an MSI application.

Before an MSI application can be effectively designed, several important questions need to be answered:

  • How will the application determine whether it is online or offline?
  • When a connection is lost, what features of the client application can still be usable? What features cannot work without a connection to the server?
  • When a connection is resumed, does the client application need to be synchronized with the server? How should this synchronization be performed?
  • If the connection is lost and the mobile PC is running out of power, how can the user's data be saved?
  • When a connection becomes unreliable or suffers from reduced bandwidth, is it possible to decrease data transfer by using a compression method or by limiting the use of graphics and multimedia files?
Different development teams will arrive at different answers, which is as it should be. There is no "one size fits all" answer.

Detecting a connection
One of the key elements of developing an occasionally connected application is the ability to switch seamlessly back and forth between online and offline modes. To facilitate this goal, one may find it useful to create a function that detects whether a connection is currently available. For example, Mobile Reference Application uses a Ping Web service, which the client calls periodically. This call is performed in the background so as not to interrupt the user.

The server exposes a function called Ping. Clients will call this function to determine if a connection can be established to the Web server. If the call is successful, the client application knows that it is online. If, however, the call fails, the application knows that the connection is down. The application can then switch to an offline mode. A Ping method was used because it verifies a number of things. First, it ensures that the client has a network connection. Second, and more importantly, it ensures that the destination Web service can be reached when the client application needs to send and retrieve data. If the Ping method can be called, then it is highly likely that the synchronization methods can also be called.

Subscribers who liked this article also read:
Creating a particle system with streaming SIMD extensions
by William Damon, technical marketing engineer, Software Solutions...
Design of portable and reusable GUI controls
By Egor Kazachkov, software engineer, Data Visualization Controls team...

If you're interested in this topic, these articles may be helpful:

Creating a composite application using IBM Lotus Component Designer
Learn how IBM Lotus Component Designer and IBM WebSphere Portal are th...
Building the Mobile Tomorrow
Introduction Intel Senior Fellow Kevin Kahn can't remember how to use...
Simulation without a simulator
by Sergey N. Zheltov, project manager, and Stanislav V. Bratanov, soft...
Retail Case Study: Creating the Future at METRO Group
Case Summary Challenge Large retailers operate in an extremely chall...
.NET client application "no touch" deployment: harness the full processing power of the desktop
by Christopher Goldfarb, senior software architect, Intel Software Sol...

Related Jobs:

Test Manager #90373694 - India - Hyderabad - Microsoft Corporation
You can be part of history and play a critical role in launching the n...
Program Manager #146852 - WA - Redmond - Microsoft Corporation
Join Microsofts fastest growing business in the Mobile & Embedded Dev...
wireless testing engineer #8576 - CA - Pleasanton - Comrise Technology, Inc.
Overview: Title: The company Certified Consultant Function: Qual...
Software Development Engineer #141604 - WA - Redmond - Microsoft Corporation
The Outlook Mobile Phone and Contacts team is looking for an experienc...
Infrastructure Architect #136865 - WA - Redmond - Microsoft Corporation
We are looking for a unique individual who possesses demonstrated abil...
Software Development Engineer in Test #142683 - WA - Redmond - Microsoft Corporation
Looking for a more exciting career path? Wish you could easily get ric...
Sr. Windows Systems Administrator - #4037 - CA - Mountain View - Synopsys
Job Responsibilities: Working in our end user services group, the PC ...
User Assistance Specialist #132623 - WA - Redmond - Microsoft Corporation
The MED UA Content Specialist is responsible for managing complex deli...
Lead Software Development Engineer #138737 - WA - Redmond - Microsoft Corporation
The Windows Mobile for Automotive team is building a comprehensive pla...
IS Technician #3362 - CA - San Francisco - EarthLink, Inc.
IS Technician posted 11/29/05 Requirements IS Technici...