The SCA and SDO specifications both aim to provide elements of a programming model for building systems which use a service-oriented architecture.
SCA provides a way of describing the structure of service-oriented solutions. It uses service components as the basic building blocks, where a service component offers one or more services and optionally makes references to services supplied by others. One or more service components can be composed together using a composite which not only defines anc configures the components, but also wires together their references to services which resolve them. Composites can also apply specific bindings to wires (eg Web services) and also apply policies that determine how wires are used (eg applying encryption to messages flowing between a reference and a service).
SCA aims to encompass a wide range of technologies, including many programming languages that may be used to implement components and also many types of binding that may be used for communication.
SDO defines a programming model for accessing data in a service-oriented architecture. It provides a standard way for the programmer to deal with data whatever its source or target. For example, it can handle data from an XML document or it can handle data from a relational database. SDO also supports a disconnected data model, where data can be extracted from its source, manipulated by a client program and then updates sent back to the source, without the need to lock the source data. This is often a more satisfactory approach in handling serivce-oriented architectures.