Apache Tuscany - A framework to help build SOA based applications
SCA concepts.
- http://en.wikipedia.org/wiki/Service_component_architecture
- http://www.davidchappell.com/articles/Introducing_SCA.pdf
- http://tuscany.apache.org/quick-guide-to-sca.html#QuickGuidetoSCA-scapolicy
- http://www.osoa.org/display/Main/Relationship+of+SCA+and+JBI If we look at Apache Servicemix, the underlying approach there to building SOA apps is JBI. However, SCA and JBI can be complementary. The approaches to implementing SOA would depend on what's needed. Perhaps starting with SCA might be the first step before moving to other approaches, especially if it is relatively lighter than others.
- Coupling - build loosely or tightly coupled components
- SCA units: SCA domain, module, composite, component. A module contains components and composites. Composites contain components
- Communicating between SCA "domains" via Bindings which are the means to communicate between services. Flexible support for protocols REST, OSGI, SOAP, or if using a BPEL based component (process to services). Support for connecting to non-SCA components. Given the diversity of prototcols for existing components or early development, we can provide additional bindings for a component later when ready or when a specialist designs the common communication approach. For example, refactoring communications to some other approach in some later development phase.
- OSGI support http://tuscany.apache.org/sca-java-implementationosgi.html
Quoted from site: "SCA is a standard programming model for abstracting business functions as components and using them as building blocks to assemble business solutions. An SCA component offers services and depends on functions that are called references. It also has an implementation associated it with it which is the business logic that can be implemented in any technology.
SCA provides a declarative way to describe how the services in an assembly interact with one another and what quality of services (security, transaction, etc) is applied to the interaction. Since service interaction and quality of service is declarative, solution developers remain focus on business logic and therefore development cycle is simplified and shortened. This also promotes the development of reusable services that can be used in different contexts. For example, a shopping cart service can be used in a retail application or a travel application without changing. Services can interact with one another synchronously or asynchronously and can be implemented in any technology.
SCA also brings flexibility to deployment. A solution assembled with SCA is deployed as a unit and can be distributed over one or more nodes in the network and can be reconfigured without programming changes
Applications that adopt SCA programming model can interact with non-SCA applications. Meaning non-SCA application can call into SCA enabled applications and SCA enabled applications can call out into non-SCA enabled application
he basic building block for SCA is a component. It is the abstraction of a given business function. A component is described with the following attributes:
- Service: Describes the functions that this type of component provides. A component can offer one ore more services. A service is an interface.
- Reference: This describes the dependencies this type of component has in order to function. A reference is an interface.
- Property: This defines configuration parameters that can controls how the business function can behave. For example, what currency to use for an account component.
- Intent policies: This describes assumptions on how the component will behave. There are two types of policies.
- Implementation policy- Impact the behavior of an implementation. For example, transaction, monitor and logging
- Interaction policy - defines how the components behave with one another. For example, security.
- Implementation: Every component has some implementation associated with it. This can be a new business logic or an existing one that is now being used in the assembly. A business logic can handle different operations and some of which are exposed externally as callable services. Component implementation can be in any technology, for example for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type.
This is demonstrated below.
The implementation of a component can be in any language that is suitable for the user, for example BPEL for business processes or XSL-T for transformations or Ruby for scripting or pure Java. How the services, references, properties and intents are defined for an implementation is specific to that particular implementation type."