SyncML® defines the Client and the Server roles for devices participating in synchronization. Chapter 5 elaborates on the differences between these two roles. It is possible for the same device to act as a Client on some occasions and as a Server on other occasions. In practice, however, mobile devices such as PDAs and mobile phones commonly assume the Client role and more resource-rich computers such as PCs and network servers assume the Server role. A device implementing the Client role is afforded certain freedoms in not having to implement all the features of SyncML (see Chapter 11). The asymmetry between the Client and Server roles in SyncML only reflects the inherent, practical asymmetry between a Client and a Server in Client-Server computing. In SyncML, the practical expectations for a Client and a Server are quite different. The Client focuses on ease of use, portability, and memory usage issues. The Server, on the other hand, focuses on an entirely distinct set of issues:
A SyncML Server must be able to deal with tremendous heterogeneity, including diverse types of mobile devices and their capabilities. The Server may be required to target and filter data to accommodate the limitations of certain devices. The Server also must contend with various data types, various security mechanisms, and numerous back-end data sources. Clients usually only keep track of changes made to the data on the device, collect and transmit the changes during synchronization, and receive changes from the Server and update the local data accordingly. The Server must perform the bulk of the synchronization analysis detecting and resolving conflicting updates. In addition, the Server should be able to scale to support thousands of Clients in an efficient and dependable manner.
There are different types of SyncML Servers. The different types may support different groups of users and different classes of applications. Broadly, however, Servers are of the following categories:
Local synchronization Servers typically execute on personal computers offering functions such as PIM synchronization, and backup and restore services for mobile devices. We choose not to focus on such Servers in this chapter, because such local synchronization functionality is not the key driving force for SyncML. The service provider Server typically supports mass-market applications, such as calendars, address books, and email. This type of Server must scale well to many thousands of Clients. The enterprise Server typically supports enterprise applications, such as business email, workflow, inventories, and orders. They usually have richer semantics and higher demands for security and reliability. SyncML Servers are designed in a wide variety of ways. The following describes the architecture of a generic Server. The purpose of this architecture discussion is strictly illustrative and should not be interpreted as a recommended design template.