Overview and Scenarios (Sync Services)
Microsoft Sync Services for ADO.NET 2.0 enables synchronization between databases. It provides an intuitive and flexible API that enables you to build applications that target offline and collaboration scenarios. Sync Services enables synchronization between two peers, such as SQL Server databases or between a SQL Server Compact 3.5 client database and a server database or another other data source. The API enables you to use all or only some of the components that are provided, depending on the architecture and requirements of an application.
Sync Services is a part of Microsoft Sync Framework. To download Sync Services, go to this Microsoft Web site. Sync Framework is a comprehensive synchronization platform that enables developers to add synchronization capabilities to applications, services and devices. Because Sync Services is part of Sync Framework, any database that uses Sync Services can then also exchange information with other data sources that are supported by Sync Framework, such as Web services, file systems, or custom data stores.
Synchronization Scenarios
The ability to support mobile and remote workers is becoming more important for organizations every day. It is very important for organizations to make sure that workers have access to the same information that they have when they are in the office. In most cases, these users will have a laptop, office desktop, smartphone, or PDA. From these devices, users can frequently access data directly by using a VPN connection or some other method of connecting directly to the corporate network. For most remote users, this solution is less than satisfactory because of major disadvantages in the following areas:
Network requirements
To enable users to access information, the remote device must have a constant connection to the corporate network while it is accessing data. For some workers, such as those who are working from home, this might not be a problem. For other users, such as salespeople who are constantly on the move, this could be more difficult. For example, if a salesperson is visiting a customer and cannot access inventory data because there is no network connectivity, the salesperson cannot effectively do her job.
Data access speeds
In a typical client/server corporate environment, users have high speed networks that enable quick access to information. However, remote workers are usually connected over slow, unreliable wired or wireless networks. By using a typical solution, every piece of data that a user wants must be downloaded every time that it is requested, because there is no way to persist the data on the device. For example, if a salesperson must download his product list every time he opens his application, the time lag required to populate the application with information could be frustrating.
Single point of failure
With this kind of solution, all users rely on a single server. If that database is not available because of planned server downtime or from server failures, all remote workers will be disconnected from their data.
Server scalability
As more people work remotely, the performance of the corporate servers will be affected, and more hardware might have to be added.
Occasionally Connected Applications
An alternative to the solution described in the previous section is to implement an occasionally connected application. An occasionally connected application enables a remote worker to continue to access data. However, unlike the previous scenario in which the user had to access the corporate database directly to obtain the information she wanted, the information she wants is stored locally on a device. To populate a local database, an occasionally connected application typically uses data synchronization.
Data synchronization consists of the ability to periodically take information that is stored in a client database (such as SQL Server Compact) and synchronize changes with a server database (such as SQL Server). A synchronization-based solution offers the advantage that a user no longer has to have a constant network connection to access information. Because the data is stored locally, a user has constant access to the data while processing is offloaded from the central database. Additionally, because the speed of the network is no longer a limiting factor, a user can now access the data at the speed of the device.
The following illustrations show examples of occasionally connected applications in which data (represented by a green database) is persisted locally on the device of a remote worker. The first example shows a stand-alone database system in which information is stored directly on the user’s device. The second example shows a remote office where information is stored in a workgroup database within this remote office so that multiple local workers can access the data. For more information about offline synchronization, see Offline Scenarios (Sync Services).
A common extension to this kind of occasionally connected application is the ability to support collaboration scenarios. These are scenarios in which two databases can be synchronized peer-to-peer without having to go through a central hub. As shown in the following illustration, a remote database is free to exchange information with any other database. This kind of solution is useful when remote workers (such as on-site financial auditors) work as a group in a remote location. These workers must frequently share information among one another. However, because they do not have connectivity to the central database, they must share information through some kind of peer-to-peer network. For more information about data collaboration, see Collaboration Scenarios (Sync Services).