4.1 Example System Architecture

Data flow of RDC in an application

Figure 6: Data flow of RDC in an application

The preceding figure shows the data flow of a possible usage of RDC in an application. Note that there are other possible ways to utilize RDC in an application.

The following terms, in addition to the glossary terms defined in section 1.1, are used in this example.

Assembler: A function that constructs the target file using three inputs: needs lists, source chunks, and seed chunks.

Compare: A function that compares the signatures of the seed files and source files. After performing this comparison, the Compare function produces a list of needs.

Needs: A description of a block of data from either the source file or the seed file that is necessary to construct the target file.

Needs List: A list of needs in some application-defined format.

Reader: A function that reads chunks from a seed file or a source file as determined by the needs list.

Reader Proxy: A function that communicates with the reader on the source location.

The vertical line represents the network separation between two processes. The file to be transferred is hosted by the source service on the right (the source location for this example); the file is to be transferred to the target service on the left (the target location for this example).

Chunks of both the seed data and the corresponding source data are examined, and a signature is generated for each chunk. The signatures generated on the target location (that is, the seed signatures) can be stored using any mechanism. The signatures generated on the source location (that is, the source signatures) are sent to the target location in the form of a signature file.

The target location examines the source signatures. For each source signature, the target location tries to find a matching seed signature. If a matching seed signature is found, the target location already has the corresponding chunk of data and is not required to download it. If no matching seed signature can be found for a particular source signature, the target location must download the corresponding chunk of data from the source location.

When the target location has all of the data chunks (those it already had, and those it downloaded from the source location), the target location assembles the chunks in the order that corresponds to the signature file that was received from the source location.

For more information on the high-level aspects of RDC, see [MSDN-RDCAPI].