What is SOA? - SOA and Web Services Explained
 
 
 
Software developers have always struggled with the problem of creating software that is easy to maintain, extend and integrate with other systems. In this quest, various approaches to designing and writing software have been followed:

 
In the early stages of the software industry itself, programmers learnt that organizing code into modules made it easy to maintain and reuse discrete pieces of functionality, This led to the development of large libraries of code that are still used today.
The next major revolution in software design was object orientation. Software was modeled on the lines of real world and virtual objects where an ‘object’ had properties which defined its state as well as methods to change its state. Objects could be extended as required. The implementation details of an object were hidden from the consumers of the object and could be changed as long as the object’s signature remained the same. This led to even greater ease of maintenance and extensibility. This paradigm was extended to distributed object systems where objects could reside on different machines across a network and talk to each other using various remote access protocols.
The industry gradually realized that there was a huge potential market for pieces of functionality that could be plugged into software applications and customized for that specific application’s needs. This led to the concept of software components.
The latest buzzword in the software industry is ‘Service Orientation’. In this approach, software functionality is defined as a set of services.
Service Oriented Architecture (SOA) Explained


SOA is a style of architecting applications in such a way that they are composed of discrete software agents that have simple, well defined interfaces and are orchestrated through a loose coupling to perform a required function.

There are 2 roles in SOA- a service provider and a service consumer. A software agent may play both roles. SOA is not an entirely new concept – however, this article mainly focuses on SOA as implemented with web services.

What is a service?

A service is an implementation of a clearly defined business function that operates independent of the state of any other service. It has a well defined set of platform-independent interfaces and operates through a pre-defined contract with the consumer of the service. Services are loosely coupled – a service need not know the technical details of another service in order to work with it – all interaction takes place through the interfaces.

Data between the consumer and the service are passed in XML format over a variety of protocols. The main protocols that web services use today are SOAP (Simple Object Access Protocol) and REST (Representational State Transfer). While REST uses the existing internet infrastructure (HTTP), SOAP is independent of the network layer and can use a variety of network protocols like HTTP, SMTP and the like.

Benefits of Service Oriented Architecture (SOA):

1. Platform Independence – Since web services can be published and consumed across development and operating platforms, an enterprise can leverage its existing legacy applications that reside on different types of servers and build additional functionality without having to rebuild the entire thing. It also helps an enterprise to integrate its applications with those of its partners.

2. Focused Developer Roles – Since a service is a discrete implementation independent of other services, developers in charge of a service can focus completely on implementing and maintaining that services without having to worry about other services as long as the pre-defined contract is honored.

3. Location Transparency – Web services are often published to a directory where consumers can look them up. The advantage of this approach is that the web service can change its location at any time. Consumers of the service will be able to locate the service through the directory.

4. Code Reuse – Since SOA breaks down an application into small independent pieces of functionality, the services can be reused in multiple applications, thereby bringing down the cost of development.

5. Greater Testability – Small, independent services are easier to test and debug than monolithic applications. This leads to more reliable software.

6. Parallel Development – Since the services are independent of each other and contracts between services are pre-defined, the services can be developed in parallel – this shortens the software development life cycle considerably.

7. Better scalability – Since the location of a service does not matter anymore, the service can be transparently moved to a more powerful server to service more consumers if required. Also, there can be multiple instances of the service running on different servers. This increases scalability.

8. Higher availability – Since the location of a service does not matter and you can have multiple instances of a service, it is possible to ensure high availability.
Read this case study to know how we developed an application using SOA.

 

About IWD

IWD is the .NET division of Bangalore based Stylus Systems Pvt. Ltd. IWD offers qualified and experienced .NET Software Engineers on contract to global companies to work from IWD premises. Our .NET experts have ample experience with Visual Basic. You can hire our engineers for your Visual Basic requirements.

CIOs whose roles are changing from purely technical to business oriented solutions development find our .NET Software Engineers very useful and productive towards realizing their company’s goal and the overall development of the IT department.

Contact us with to hire a team of Visual Basic programmers or .NET Software Engineers from our pool of experts. Once you share your requirements with us, we can schedule a call to discuss the same.

   
Our pool of .NET Software Engineers have been trained and seasoned in adhering to quality standards and processes.
 
Learn more about how you can hire our .NET resources