SyncML® can enable numerous applications that require data to be synchronized among various devices. The applications range from managing personal information, such as contacts, calendars, and email, to managing enterprise information, such as inventory data. The applications must support diverse devices that connect using different networks. In addition, the applications have varying reliability, performance, and security needs. Authoring such applications and making them interoperable is a difficult task. This chapter takes a closer look at a few applications and explains how SyncML is beneficial for the different entities that use it.
Before considering specific applications, it is useful to note certain characteristics of many common data synchronization applications. Unlike applications that primarily reside and operate on one computer, many data synchronization applications are partitioned between Client and Server parts. These two parts of the application work together to provide the overall user experience. A Web browser and a Web server also work together to provide an overall user experience. The interaction between the parts of a data synchronization application, however, is more coordinated and semantically coupled than the more ad hoc interactions between a Web browser and a Web server. For example, the address book on a personal handheld device and its PC counterpart are more aware of each other and work in a more tightly coordinated fashion than, say, an MP3 player on a mobile phone and a MP3 download Web server.
Figure 3-1 shows a logical view of mobile data synchronization applications partitioned between clients and servers. Client parts often manage user interaction, keep a record of changes made to application data, and interact with local datastores. Sometimes, the client part uniquely corresponds to one server part as shown in Application 1. An example of this is the address book application of a personal handheld device and its PC counterpart. Sometimes multiple client parts logically correspond to one server part as in Application 2. An example of such an association is found in the family Web calendar example illustrated later in this chapter. The different client parts of the same application may reside on different devices, as in the Web calendar application. Those different parts can use various means of wired and wireless communication.
Figure 3-1. A logical view of mobile data synchronization applications showing the partitioning between client and server parts and various external entities that such applications may interact with, such as a user, a datastore, and a remote service.
The Server parts of applications interact primarily with back-end datastores and also detect and reconcile conflicting updates. The Server part sometimes also tracks changes made to back-end datastores. The Server part can sometimes interact with a user, as shown in Application 1. For example, the Server part of the address book application may reside on a PC, where a user may directly update address book entries. The Server part, as shown in Application 2, can sometimes implement application-specific logic, resulting in interaction with remote datastores, processes, or services. An instance of such behavior is found in the family Web calendar example below. Depending on application semantics, a Server part may synchronize a single Client datastore with multiple back-end datastores, as shown in Application 3. An instance of such behavior is found in the visiting nurse scenario below. Synchronization Servers typically host the Server parts of many applications. Therefore, pieces of logic common to many applications, such as detection and resolution of certain conflicts, are sometimes factored into a sync server engine. For the purposes of this discussion, it suffices to assume that the Server parts subsume functionality often factored into sync engines.
It is natural to ponder at this point what role SyncML plays in enabling these partitioned data synchronization applications. After all, many legacy data synchronization applications, such as Lotus Notes®, are built in a tightly coupled, partitioned fashion. SyncML enables uniform logical communication of data and changes made to data between the Client and Server parts of applications. As a result, the Client and Server parts of applications can be built relatively independently.
SyncML is an enabler for many mass-market applications, such as calendars, email, data backup, and picture galleries. SyncML can also be used for many enterprise applications, such as inventory management, claims processing, and procurement. The two examples below elaborate on the many common applications used today. The applications, however, illustrate the various benefits of SyncML in enabling complete data synchronization solutions. The examples we describe are: