Understanding the principles of the SOA approach
Like classes in an object-oriented architecture, services are implementations of interfaces that, in turn, come from a system’s functional specifications. Therefore, the first step in a service design is the definition of its abstract interface. During this initial stage, you might have two approaches:
- Define all the service operations as interface methods that operate on the types of your favorite language (C#, Java, C++, JavaScript, and so on) and decide which operations to implement with synchronous communication and which ones to implement with asynchronous communication.
- Create the contract first in an interoperable format. In this approach, you can use definition files using patterns like OpenAPI, Protobuf, WSDL, or AsyncAPI, without touching the programming language with which the services will be developed, using some tools to help.
The interfaces that are defined in this initial stage will not...