Service-Oriented Architecture expresses a perspective of software architecture that defines the use of services to support the requirements of software users. In an SOA environment, resources on a network are made available as independent services that can be accessed without knowledge of their underlying platform implementation
Services - Discrete elements of functionality that carry out one action. These services are brought together to create composite services and systems such as filling out an online application for an account, viewing an online bank-statement, or placing an online booking or airline ticket order. Services communicate with one another via a common communication method. The most common standard in use is Web service. Essentially, web services are XML documents wrapped in a security and transport wrapper. A service will publish the format it needs requests to be presented in WSDL document (Web Service Definition Language).
Loose Coupling - Services are joined together loosely and on demand to create composite services, or disassembled just as easily into their functional components, regardless of physical location, platform or compatibility limitations.
Orchestration - Developers create new services and systems through the process of orchestration. Orchestration associates software functionality (the services) in a non-hierarchical arrangement using a software tool that contains a complete list of all available services, their characteristics (Instructions and Parameters), and the means to build an application utilizing these sources.
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.
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.
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.
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.
Greater Testability – Small, independent services are easier to test and debug than monolithic applications. This leads to more reliable software.
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.
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.
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.
PRESENCE doesn't simply enable loose coupling and a common communications method as part of the SOA solutions. It creates a complete end-to-end solution for technology teams who need smart tools to complement their service delivery activities.
PRESENCE brings together service-oriented architecture, enterprise integration, business process execution and application development into one platform and is being embraced by technology teams across all sectors.