Overview

Services enable remote, parallel execution of code in a way that is scalable, fault-tolerant, dynamic, and language-independent. You can write Services in a variety of languages and do not need to compile or link them with DataSynapse libraries. There are client-side APIs in Java, C++, COM, R, Python, and .NET. A client written in one language can invoke a Service written in another.

The Service execution model is the same as that of other distributed programming solutions: method calls on the client are routed over the network, resulting in method calls on a remote machine, and return values make the reverse trip. We prefer the term request to call or invocation, partly because the operation can be either synchronous or asynchronous.

Use Services to implement parallel processing solutions in which a single computation is split into multiple, independent pieces whose results are combined. To split the computation, divide the problem, submit the individual requests asynchronously, then combine the results as they arrive. Services also work well for executing multiple, unrelated serial computations in parallel.