Service-Oriented Architecture and Web Services
Service-oriented architecture (SOA) is a style of software design where services are provided to the other components by application components, through a communication protocol over a network. An SOA service is a discrete unit of functionality that can be accessed remotely and acted upon and updated independently, such as retrieving a credit card statement online. SOA is also intended to be independent of vendors, products and technologies.
A service has four properties according to one of many definitions of SOA:
- It logically represents a business activity with a specified outcome.
- It is self-contained.
- It is a black box for its consumers, meaning the consumer does not have to be aware of the service's inner workings.
- It may consist of other underlying services.
Different services can be used in conjunction to provide the functionality of a large software application, a principle SOA shares with modular programming. Service-oriented architecture integrates distributed, separately maintained and deployed software components. It is enabled by technologies and standards that facilitate components' communication and cooperation over a network, especially over an IP network.
SOA is related to the idea of an application programming interface (API), an interface or communication protocol between different parts of a computer program intended to simplify the implementation and maintenance of software. An API can be thought of as the service, and the SOA the architecture that allows the service to operate.
F.A.Q. about Service-Oriented Architecture and Web Services
What is Service-Oriented Architecture?
Service-oriented architecture (SOA) is a software architecture style that supports and distributes application components that incorporates discovery, data mapping, security and more. Service-oriented architecture has two main functions:
- Create an architectural model that defines goals of applications and methods that will help achieve those goals.
- Define implementations specifications linked through WSDL (Web Services Description Language) and SOAP (Simple Object Access Protocol) specifications.
Service-oriented architecture principles are made up of nine main elements:
- Standardized Service Contract where services are defined making it easier for client applications to understand the purpose of the service.
- Loose Coupling is a way to interconnecting components within the system or network so that the components can depend on one another to the least extent acceptable. When a service functionality or setting changes there is no downtime or breakage of the application running.
- Service Abstraction hides the logic behind what the application is doing. It only relays to the client application what it is doing, not how it executes the action.
- Service Reusability divides the services with the intent of reusing as much as possible to avoid spending resources on building the same code and configurations.
- Service Autonomy ensures the logic of a task or a request is completed within the code.
- Service Statelessness whereby services do not withhold information from one state to another in the client application.
- Service Discoverability allows services to be discovered via a service registry.
- Service Composability breaks down larger problems into smaller elements, segmenting the service into modules, making it more manageable.
- Service Interoperability governs the use of standards (e.g. XML) to ensure larger usability and compatibility.
How Does Service-Oriented Architecture Work?
A service-oriented architecture (SOA) works as a components provider of application services to other components over a network. Service-oriented architecture makes it easier for software components to work with each other over multiple networks.
A service-oriented architecture is implemented with web services (based on WSDL and SOAP), to be more accessible over standard internet protocols that are on independent platforms and programming languages.
Service-oriented architecture has 3 major objectives all of which focus on parts of the application cycle:
- Structure process and software components as services – making it easier for software developers to create applications in a consistent way.
- Provide a way to publish available services (functionality and input/output requirements) – allowing developers to easily incorporate them into applications.
- Control the usage of these services for security purposes – mainly around the components within the architecture, and securing the connections between those components.
Microservices architecture software is largely an updated implementation of service-oriented architecture (SOA). The software components are created as services to be used via APIs ensuring security and best practices, just as in traditional service-oriented architectures.
What are the benefits of Service-Oriented Architecture?
The main benefits of service-oriented architecture solutions are:
- Extensibility – easily able to expand or add to it.
- Reusability – opportunity to reuse multi-purpose logic.
- Maintainability – the ability to keep it up to date without having to remake and build the architecture again with the same configurations.