Intermediaries can be used to simplify the interoperability interface as they present a consistent API to the calling application and shield it from the underlying communication protocols necessary to invoke the called program. 3.4 Data-type compatibility Software Interoperability requires that there at least be compatibility between the data types used in the exchange of knowledge. There must be a consistent view of the attributes and behavior of any data object shared among the integrated applications. While a single type model across all the languages in which interoperable programs will be written greatly simplifies their integration, it is too much of a restriction for most practical purposes. In this approach, knowledge exchange is via a universal representation.
Many programming languages support customized formatting of such files.
IPC supports byte stream exchange between two applications that agree on the type model so that translation between the shared data model and the byte stream can be achieved. A single, universal type model is usually based around the basic data types to be supported at the level of interoperability. Traditionally, these are types such as strings of text, real numbers, and integers. Extensions to support aggregate types, such as arrays, are straightforward. Interoperability supporting basic types has been fundamental to the success of RPC protocols used in client-server systems today.