5-minute SOA / SCA in WebSphere ESB
SOA (Services-Oriented Architecture) is a very general idea; the notion of defining business and computing logic as interconnecting services, typically in a distributed computing environment, where some services depend on (call upon) others. SCA (Service Component Architecture) defines some terminology and standards for this, using the concept of SCA modules - you can think of each module as being a black-box service. SCA modules can import services from other SCA modules (which have corresponding exports, defining the services they provide). They can also expose (export), and call upon (import) services via other protocols.
Inside an SCA module is a similar set of constructs to that of the interconnected modules; in the ‘middle’ there are SCA components, which reference other SCA components (which have interfaces). On the ’left-hand-side’ of the module (it is indeed drawn on the left-hand-side in WebSphere Integration Developer) are the exports, and on the ‘right-hand-side’ are the imports. The exports typically connect to some components’ interfaces, and imports connect to some components’ references.
In WebSphere Process Server and ESB, imports and exports are one of four types:
-
SCA ‘default’ binding (it is perhaps helpful to think of this as the SCA ’native’ binding). This binding is used to link two SCA modules together. It supports all valid SCA behaviours, and its implementation is system-dependent. SCA bindings can also only link modules within the same address space (in WebSphere Process Server and ESB this means on the same server) [correction: this is not true, please see this update], are easy to set up (just specify the other module’s name on the import), and are typically high-performing.
-
SOAP over HTTP binding - A web service is invoked (import) or exposed (export). These are synchronous only, by the nature of the transport.
-
SOAP over JMS binding - A web service is invoked over JMS (import) or exposed (export). These are asynchronous only, by the nature of the transport.
-
JMS binding - Data is sent to a JMS destination - i.e. a queue or topic (import) or recieved from a destination (export). These are asynchronous only, by the nature of the transport.
In WebSphere Process Server, SCA modules typically contain some of these types of components:
-
BPEL
-
State Machine
-
Business Rules
-
Human Task
-
Selector
-
Interface Maps
-
Java
WebSphere ESB adds an additional type of SCA component, a Mediation Flow. This can only be embedded in a special type of SCA module, called a Mediation Module (which can only contain one Mediation Flow). Mediation Modules can be run on WebSphere ESB and Process Server, but ESB is only designed for mediation, and does not support Modules containing the Process Server components above (such as BPEL).
You can find out more about SCA in Process Server by reading this excellent article on IBM Developerworks.
Comments