Service Data Objects simplify and unify Service Oriented Architecture data access and code in a heterogeneous environment. The SDO API concepts are programming language neutral. Specifications for Java and C++ SDO can be found at the Open Service Oriented Architecture website. Within Tuscany SDO is being implemented in Java and in C++. A PHP version of SDO is available for download from the PHP Extensions Community Library (PECL). Implementations for other languages have been mooted, e.g. Ruby.
SDO can be used to represent data structures from the presentation layer all the way through to the persistence layer. It is a natural format for representing data on the wire in an SOA environment. Typically in SDO a Data Access Service (DAS) is used to access a data source and create a disconnected data graph of SDO data objects corresponding to the data found in the data source. When a graph is modified, concise information about those modifications is summarized in the graph structure along with the updated graph. This information can be useful for rolling back changes or for facilitating intelligent behaviour by a DAS when updating the original data source.