09.07.2017 at 3:53 am #4103
Васильев Владимир СергеевичKeymaster
What is SOA
This is a very special way to build applications, and if to compare it with, for example, a traditional object-oriented approach, or even a component-based architecture, it’s a whole different level of functionality and structure organization.
Software architecture had its own way of development – from procedural programming, and then it was replaced by an object-oriented, then by component-based… But anyway each step in this evolution is focused on the same issues – how to organize the structure of code to make it reusable, to adjust its performance, security, data management, making it platform independent and so on.
Each approach gave its own answers to these questions, but all of them came to a consensus that the application can not and should not be implemented as a monolithic code that once installed on the machine does not require (neither allows) any improvements and extention after requirements change .
Service-oriented architecture provides a new approach to represent functionality of applications – as a number of services – independent, full-fledged applications that can reside on the same machine or somewhere in the network.
We use the termine loosely coupled when speaking of services, since for communiction they are using special algorithms encapsulated in objects, which can be changed without changing the structure of the services themselves.
To be able to interact with client applications a service must provide the scheme of interaction that is described via interfaces.
The principles of service-oriented architecture
There is a set of principles that describe the service-oriented architecture:
- services are completely stand-alone applications.
- services can be located anywhere in the network, either on the local machine or remotely.
- services are independent of the programming language and operating system
- to transmit data, services use contracts and schemes – special objects that describe the form in which data is transmitted through the network, what services can do, as well as the paradigm of interaction between client and server
- interoperability – that is, the ability to interact with other systems without any restrictions on access
- reusability (I think this part does not need any explanation)
The main components of a service-oriented architecture
From an architectural perspective, SOA is based on four pillars:
- client application – that initiates the call to service and receives the result of its work
- service that provides functionality for clients
- host application that encapsulates one or more services, and provides mechanisms to detect them
- service bus which provides interaction between all components of the architecture
If speaking of SOA as an architectural pattern of a very high level, it is possible to draw a parallel with such design pattern as Facade. Just think – if a service aggregates other services, which means working with some more simple services, then in fact it provides the ultimate functionality, hiding the implementation of this functionality.
Let us think in which situation it might be useful to use services. Lets assume that your company sells some products that you purchase from different manufacturers and sell them wholesale or retail.
First, you have to follow the exchange rate, in order to understand what price to put on the goods and not to lose profit. If your application accesses the service which provides information on the current exchange rates and notifies about any changes, you will not miscalculate.
Second, you need to understand if something you are selling is still produced by the manufacturer and if it is available at the stock. If the product is not available for some reason, but you are still trying to make a deal to sell it to, there might be some misunderstanding from your client’s side. But if your application requested this information from the service of your manufacturer such mistakes would not happen.
It is important to understand that the service is an application that does not deal all and sundry, and performs a narrow, strictly indicated task.
I want to make just one more note – that within the .NET platform SOA is presented by WCF technology (Windows Communication Foundation).
You must be logged in to reply to this topic.