SOA is one of the most up-to-date approaches to software development, based on the idea of representing software as an extensible set of services (typically, Web services).
Service is a software component available for the user for consuming, adding to the current workspace, and monitoring.
Simple example of a service: Getting the weather forecast via the Internet.
The basic principle of SOA is as follows. From the client viewpoint, a set of the software products to be consumed by the user is represented as a set of simple-to-use Web services with comfortable graphical user interface. This working set of services is often referred to as mash-up.
A service-oriented model should be extensible: the client should be able to add new services or change the working set of available services.
The clients should be also able to call and consume services from different kinds of computing devices – desktop, laptop or tablet computers, or mobile devices.
The interface of a service is referred to as its contract. It is a set of Web methods. Each of the Web methods is specified by its name and types of its arguments. The contracts of each Web method should be explicitly specified and should be available for requests of SOA clients who are interested in the full set of the available Web methods.
The platform of implementation of services should be insignificant for the user. A service can be implemented on the .NET, or in Java, or any other suitable platform. The only important rule for the implementer of the service is to follow the standards of service development. Currently, there are two commonly used standards for developing services.
One of the service development standards is WSDL (Web Service Description Language). It is based on representing the contract of the service (its Web interface) in XML format in a specification language referred to as WSDL. A WSDL service works synchronously, so the client waits for one Web method call to finish before calling the other Web method. So this standard of consuming services works slower but is more reliable. In this standard, a service is stateful (remembers its state) and keeps information on the session of its consuming. The arguments of such service Web methods, objects of some types, are transferred via the network in serialized form – represented as a typed stream of bytes. One of the commonly used methods of serialization is XML; the other ones are offered by Java and .NET (on the .NET platform, the term marshaling is used as a synonym for the term serialization).
The other service development standard is REST (Representational State Transfer). A common IT slang is to refer to such services as RESTful. With this standard, a Web method of the service is called asynchronously which is, generally speaking, faster, as compared to using a WSDL-based service. In addition, a RESTful service is stateless, so the information on its state, as well as the arguments of the Web method, is passed as parameters to the Web method call.
The developer of the services should have an opportunity to publish his or her Web services somewhere on the Web where the clients can find (discover) it.
Support of the SOA model is provided by a number of modern software tools and Web portals; for example,
by Microsoft SharePoint, which is a simple-to-use toolkit to create extensible Web pages and Web services;
by UDDI (Universal Discovery, Description and Integration) technology supported by Microsoft, available via the Web portal http://uddi.xml.org/ intended for publishing and discovering Web services.
From the viewpoint of the service-oriented model, cloud computing is the most up-to-date SOA model implementation. The cloud provides access to a set of its Web services via the client browser. Publication of the newly developed cloud services is quite possible via the cloud. For example, on the Microsoft Azure cloud platform, the cloud Web interface provides a simple way to create a new empty Web service and then to implement it using some integrated development environment (IDE, e.g., Visual Studio) and to publish the newly implemented Web service in the cloud.