Title: Bridging component frameworks: Fractal
1Bridging component frameworksFractal
SCA06/13/2006
2Plan
- Introduction
- Fractal
- Service Component Architecture (SCA)
- Bridging Fractal SCA
- Perspectives
3Introduction
- Many Component frameworks
- Fractal, SCA, CCM, OSGi
- Component framework interoperability?
- Data exchanges
- Workflow
- Case Study
- interoperability between Fractal SCA
4Fractal
- ObjectWeb component model
- Hierarchical with sharing
- Unified vision of business and control
interfaces - No predefined set of control interfaces
- Support for primitive and composite bindings
5Service Component Architecture
- Specifications by IBM, BEA, Oracle, SAP
(version 0.9, november 2005) - SOA based on a components model
- Two levels of assembly
- Tightly coupled components programming in the
small - Loosely coupled service-oriented services
programming in the large
6Service Component Architecture
Component
Service
Reference
- Service and Reference defined by
- Java Interface
- WSDL PortType
- Component implementation
- JAVA, BPEL, JavaScript, C
7Service Component Architecture
- Organize components into modules
Module
ComponentA
ComponentB
EntryPoint
Extern.service
Wire
8Service Component Architecture
- Communication between modules
- Module largest composition of tightly-coupled
components - SCA runtimes must implement
- WebServices (SOAP)
- SCA link (local calls)
- Extensible Bindings
- Could be JMS, JCA, SLSB, adhoc serialization
9Service Component Architecture
10Service Component Architecture
- Service Component Definition Language
- aka Fractal ADL
- XML files, defines the architecture
- One .module file per module
- Optional .subsystem group modules into
business logical processes - Component annotation, defines the implementation
- .componentType file
- JAVA 5 annotations
11Service Component Architecture
- Tuscany (Milestone 1 released on 07/06/2006)
- Implements SCA specifications
- JAVA and C runtimes
- Service Data Object
- Data Access Service
- http//incubator.apache.org/tuscany
12Plan
- Introduction
- Fractal
- Service Component Architecture (SCA)
- Bridging Fractal SCA
- Goal
- Fractal to SCA
- SCA to Fractal
- Perspectives
13Bridging Fractal SCA / GOAL
- Goal let Fractal SCA applications interoperate
- Common communication mechanism (SOAP)
- Fractal to SCA
- SCA to Fractal
- 2 prototyped solutions
- shadow delegating components
- SOAPBindingController
14Bridging Fractal SCA / Fractal to SCA
- Fractal client, SCA server
SCA Cpn.
Fractal Cpn.
?
EntryPoint
15Bridging Fractal SCA / Fractal to SCA
- Shadow delegating components
Java annotated interface
SCA Cpn.
Generated
EP
SCA Shadow
Fractal Cpn.
Soap layer
16Bridging Fractal SCA / Fractal to SCA
- Shadow SCA delegate
- Pros
- Simplest way to connect to a SCA component
- Component description in the Fractal
architecture - Cons
- Static generation, at compile time
17Bridging Fractal SCA / Fractal to SCA
- Development process of a shadow
- Annotation _at_SOAPClient on interface
- Define the wsdl file for the target service
- Define a Type mapper for business objects
- Spoon processor generate a component
- Implements Service Interface
- Transparently delegate calls to SOAP layer
18Bridging Fractal SCA / Fractal to SCA
import fcsoap.annotations.SOAPClientimport
fcsoap.annotations.SOAPName _at_SOAPClient(wsdlFil
e"bank/common/AccountService.wsdl", mapConf
BankMapperConf.class) public interface
AccountService public OperationList
getOperations( _at_SOAPName("in0") String id)
19Bridging Fractal SCA / Fractal to SCA
SOAPBC
Fractal Cpn.
Soap layer
SCA Cpn.
EP
20Bridging Fractal SCA / Fractal to SCA
- SOAP Controller
- Pros
- Dynamic service binding
- Cons
- Written by programmer
- No component representation of the SCA service
21Bridging Fractal SCA / Fractal to SCA
- Accessing SOAP Layer with SOAP Controller
- Retrieve the SOAPcontroller
- Get a reference to the service interface
obtain a Java Proxy delegate calls to SOAP
layer - Code snippet
AccountService service public void run()
Component comp getFcInterface(soap-controlle
r) service comp.getSOAPInterface( "bank/com
mon/AccountService.wsdl", AccountService.class)
new BankMapperConf().registerTypes(
TypeMapper.INSTANCE ) OperationList ol
service.getOperations(123456) ...
22Bridging Fractal SCA / SCA to Fractal
- SCA client, Fractal server
SCA Cpn.
Fractal Cpn.
Extern.service
?
23Bridging Fractal SCA / SCA to Fractal
Comanche
register
Fractal Cpn.
Soap layer
SCA Cpn.
ES
24Bridging Fractal SCA / SCA to Fractal
_at_SOAPService(wsdlFile"bank/common/AccountService.
wsdl", mapConf BankMapperConf.class) public
class AccountImpl implements AccountService
private OperationList operations ... pub
lic OperationList getOperations(String _)
return operations
25Bridging Fractal SCA
- New feature Fractal client, Fractal server
JVM
JVM
ClientImpl
AccountImpl
SOAP !
26Conclusion
- Ability to bind Fractal SCA
- Static solution Shadow delegate component
- Dynamic solution SOAPBindingController
27Perspectives
- Short-term view
- Use all informations available into the wsdl
- Fractal ComponentType to WSDL generation
- Long-term view
- Use XSD schema to map business object
- One-way calls (async calls)
- Statefull calls (session and transaction
handling)
28- Any questions ?
- Try it yourself !
- Tuscany SCA
- http//incubator.apache.org/tuscany
- Fractal SOAP layer
- Available upon request Guillaume.Dufrene_at_lifl.fr