Toward a Programming Model for Service-Oriented Computing

The service oriented paradigm is, at its core, a model of distributed software components, built around the idea of multi-protocol interoperability and standardized component contracts. The Web Services Interoperability (WS-I) profiles provide standards for runtime interoperability, and the Web Services Description Language (WSDL) and WS-Policy define service contracts that support interoperability between developer tools. A major goal of Service Oriented Architectures (SOAs) is to enable an abstraction layer that integrates and bridges over platform and implementation technology differences, effectively providing a universal business software component and integration framework. Achieving a complete solution requires a portable component model and well-defined patterns for components types. This paper examines the main requirements for a SOA programming model and identifies its most relevant characteristics. In line with SOA’s goals, such model must allow a broad community of users (including non-programmers) to create service-oriented applications by instantiating, using, assembling and customizing different component types that match the user’s goals, skills, and conceptual framework. Moreover, these component types must be portable and interoperable between multiple different vendors’ runtimes.