Basics of SOA
Traditional distributed computing environments have been tightly coupled in that they do not deal with a changing environment well. For instance, if an application is interacting with another application, how do they handle data types or data encoding if data types in one system change? How are incompatible data-types handled?
SOA is an architectural style to achieve loose coupling among interacting software agents. A service is a unit of work done by a service provider to achieve desired end results for a consumer. Both provider and consumer are roles played by software agents on behalf of their owners. SOA is deliberately unprescriptive about what happens behind service endpoints � we are ultimately only concerned with the transfer of structured data between parties, plus any meta-level information to safeguard such transfers (e.g., by encrypting or digitally signing messages).
SOA breaks the three-tier approach by inserting a new interface layer to de-couple the core business logic and database (back-end implementation choices) from the presentation layer and other applications. SOA turns business functions into services that can be reused and accessed through standard interfaces. The following diagram illustrates the approach through an example of an order management system which has been adapted for SOA by creating individual services tied to the particular business functions. These services form the service layer which, if designed correctly, can then be access through different applications over a variety of channels. These services can also be reused in new applications.
Although SOA departs significantly from the paradigm of object-oriented programming, which encourages an architecture where you should tie data and its processing together, there are a number of similarities between SOA and OOA (Object-Oriented Architectures):
How does SOA achieve loose coupling among interacting software agents? It does so by employing two architectural constraints:
The service-oriented architecture (SOA) consists of three roles: requester, provider, and broker.
Advantages of SOA
SOA provide several significant benefits for distributed enterprise systems. Some of the most notable benefits include: interoperability, efficiency, and standardization. We will briefly explore each of these in this section.
Interoperability is the ability of software on different systems to communicate by sharing data and functionality. SOA/Web Services are as much about interoperability as they are about the Web and Internet scale computing. Most companies will have numerous business partners throughout the life of the company. Instead of writing a new addition to your applications every time you gain a new partner, you can write one interface using Web service technologies like SOAP. So now your partners can dynamically find the services they need using UDDI and bind to them using SOAP. You can also extend the interoperability of your systems by implementing Web services within your corporate intranet. With the addition of Web services to your intranet systems and to your extranet, you can reduce the cost integration, increase communication and increase your customer base.
It is also important to note that the industry has even established the Web Services Interoperability Organization.
"The Web Services Interoperability Organization is an open industry effort chartered to promote Web Services interoperability across platforms, applications, and programming languages. The organization brings together a diverse community of Web services leaders to respond to customer needs by providing guidance, recommended practices, and supporting resources for developing interoperable Web services." (www.ws-i.org)
The WS-I will actually determine whether a Web service conforms to WS-I standards as well as industry standards. In order to establish integrity and acceptance, companies will seek to build their Web services in compliance with the WS-I standards.
SOA will enable you to reuse your existing applications. Instead of creating totally new applications, you can create them using various combinations of services exposed by your existing applications. Developers can be more efficient because they can focus on learning industry standard technology. They will not have to spend a lot of time learning every new technology that arises. For a manager this means a reduction in the cost of buying new software and having to hire new developers with new skill sets. This approach will allow developers to meet changing business requirements and reduce the length of development cycles for projects. Overall, SOA provides for an increase in efficiency by allowing applications to be reused, decreasing the learning curve for developers and speeding up the total development process.
For something to be a true standard, it must be accepted and used by the majority of the industry. One vendor or small group of vendors must not control the evolution of the technology or specification. Most if not all of the industry leaders are involved in the development of Web service specifications. Almost all businesses use the Internet and World Wide Web in one form or another. The underlying protocol for the WWW is of course HTTP. The foundation of Web services is built upon HTTP and XML. Although SOA does not mandate a particular implementation framework, interoperability is important and SOAP is one of the few protocols that all good SOA implementations can agree on.