Service-oriented architecture (SOA) relies on a variety
of technologies. These services interoperate based on a formal definition
independent of the underlying platform and programming language. The most
widely used services definition is Web Service Description Language (WSDL). SOA is independent
of development technology. The software components are reusable because the
interface is defined in a standards-compliant manner. Further, SOA provides a
methodology and framework for documenting an enterprise and can support
integration and consolidation activities. High-level languages such as BPEL take the service concept
one step further by providing a method of defining and supporting workflows and
business processes.
SOA can also be regarded as a style of information
systems architecture that enables the creation of applications that are built
by combining loosely coupled and interoperable services. SOA-based systems can
therefore be independent of development technologies and platforms (such as
Java, .NET etc). Services written in C# running on .NET platforms and services
written in Java running on Java EE platforms, for example, can both be consumed
by a common composite application. Applications running on either platform can
also consume services running on the other as Web services, which facilitates
reuse.
SOA can support integration and consolidation activities
within complex enterprise systems, but SOA does not specify or provide a
methodology or framework for documenting capabilities or services.