Service-oriented architecture can be implemented with
web services or
Microservices. This is done to make the functional building-blocks accessible over standard Internet protocols that are independent of platforms and programming languages. These services can represent either new applications or just wrappers around existing legacy systems to make them network-enabled. Implementers commonly build SOAs using web services standards. One example is
SOAP, which has gained broad industry acceptance after the recommendation of Version 1.2 from the W3C (World Wide Web Consortium) in 2003. These standards (also referred to as
web service specifications) also provide greater interoperability and some protection from lock-in to proprietary vendor software. One can, however, also implement SOA using any other service-based technology, such as
Jini,
CORBA,
Internet Communications Engine,
REST, or
gRPC. Architectures can operate independently of specific technologies and can therefore be implemented using a wide range of technologies, including: •
Web services based on WSDL and
SOAP • Messaging, e.g., with ActiveMQ, JMS, RabbitMQ • RESTful HTTP, with
Representational state transfer (REST) constituting its own constraints-based architectural style •
Data Distribution Service (DDS) •
OPC-UA •
Internet Communications Engine •
WCF (Microsoft's implementation of Web services, forming a part of WCF) •
Apache Thrift •
gRPC • SORCER Implementations can use one or more of these protocols and, for example, might use a file-system mechanism to communicate data following a defined interface specification between processes conforming to the SOA concept. The key is independent services with defined interfaces that can be called to perform their tasks in a standard way, without a service having foreknowledge of the calling application, and without the application having or needing knowledge of how the service actually performs its tasks. SOA enables the development of applications that are built by combining loosely coupled and
interoperable services. These services inter-operate based on a formal definition (or contract, e.g., WSDL) that is independent of the underlying platform and programming language. The interface definition
hides the implementation of the language-specific service. SOA-based systems can therefore function independently 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 (or client). Applications running on either platform can also consume services running on the other as web services that facilitate reuse. Managed environments can also wrap COBOL legacy systems and present them as software services..
High-level programming languages such as
BPEL and specifications such as
WS-CDL and
WS-Coordination extend the service concept by providing a method of defining and supporting orchestration of fine-grained services into more coarse-grained business services, which architects can in turn incorporate into workflows and business processes implemented in
composite applications or
portals.
Service-oriented modeling is an SOA framework that identifies the various disciplines that guide SOA practitioners to conceptualize, analyze, design, and architect their service-oriented assets. The
Service-oriented modeling framework (SOMF) offers a modeling language and a work structure or "map" depicting the various components that contribute to a successful service-oriented modeling approach. It illustrates the major elements that identify the "what to do" aspects of a service development scheme. The model enables practitioners to craft a
project plan and to identify the milestones of a service-oriented initiative. SOMF also provides a common modeling notation to address alignment between business and IT organizations. == Organizational benefits ==