Service-oriented programming

While SOP supports the basic programming constructs for sequencing, selection and iteration, it is differentiated with a slew of new programming constructs that provide built-in native ability geared towards data list manipulation, data integration, automated multithreading of service modules, declarative context management and synchronization of services.

Semantic design tools and runtime automation platforms can be built to support the fundamental concepts of SOP.

For example, a service virtual machine (SVM) that automatically creates service objects as units of work and manages their context can be designed to run based on the SOP program metadata stored in XML and created by a design-time automation tool.

SOP concepts provide a robust base for a semantic approach to programming integration and application logic.

There are three significant benefits to this approach: The following are some of the key concepts of SOP: In SOP, in-memory software modules are strictly encapsulated through well-defined service interfaces that can be externalized on-demand as web service operations.

This minimal unit of encapsulation maximizes the opportunities for reusability within other in-memory service modules as well as across existing and legacy software assets.

Another significant feature of the service invoker layer is the ability to optimize bandwidth and throughput when communicating across machines.

This invoker can be dynamically swapped out if, for example, the producer and consumer wish to communicate through a packed proprietary API for better security and more efficient use of bandwidth.

It is a pluggable in-memory interface that abstracts the communication protocol for incoming service requests made to the SOP runtime environment such as the SVM.

It is important to note that Service modules built through the SOP paradigm have an extroverted nature and can be transparently externalized through standards such as SOAP or any proprietary protocol.

Furthermore, if the SOP runtime is supported by a SVM capable of interpreting the metadata layer, the need for automatic code generation can be eliminated.

The result is tremendous productivity gain during development, ease of testing and significant agility in deployment.

SOP supports the basic programming constructs for sequencing, selection and iteration as well as built-in, advance behavior.

All the prepared inner-services within a composite service run in a parallel burst called a "hypercycle".

The runtime environment for SOP automatically creates and manages a hierarchical context for composite service objects which are used as a transaction boundary.

The following sections define some of these opportunities: The SOP runtime environment can systematically provide built-in and optimized profiling, logging and metering for all services in real-time.

Availability of this built-in mechanism to the SOP application developer can significantly reduce the load on back-end systems.

SOP provides a correlation-based event mechanism that results in the pre-emption of a running composite that has declared, through a "wait" construct, the need to wait for one or more other service consumption events to happen with specified input data values.

Select services can be deployed securely for external programmatic consumption by a presentation (GUI) layer, or other applications.

The SOP runtime environment can systematically provide built-in authentication and service authorization.

For the purpose of authorization, SOP development projects, consumer accounts, packages and services are treated as resources with access control.

The term service-oriented programming was first published in 2002 by Alberto Sillitti, Tullio Vernazza and Giancarlo Succi in a book called "Software Reuse: Methods, Techniques, and Tools."

SOP, as described above, reflects some aspects of the use of the term proposed by Sillitti, Vernazza and Succi.