0% found this document useful (0 votes)
96 views16 pages

Service Component Architecture (SCA) (SCA) : Lionel Seinturier

This document outlines the Service Component Architecture (SCA) framework. It discusses SCA principles such as loose coupling, flexibility, and productivity. It describes SCA's component model, including services, references, properties and implementations. It provides examples of SCA composites in Java using annotations to define services and references. It also shows how to expose a service as a web service. The document covers key aspects of programming with SCA in Java such as supported features, the assembly model, and tools for SCA development.

Uploaded by

abdel_lak
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
96 views16 pages

Service Component Architecture (SCA) (SCA) : Lionel Seinturier

This document outlines the Service Component Architecture (SCA) framework. It discusses SCA principles such as loose coupling, flexibility, and productivity. It describes SCA's component model, including services, references, properties and implementations. It provides examples of SCA composites in Java using annotations to define services and references. It also shows how to expose a service as a web service. The document covers key aspects of programming with SCA in Java such as supported features, the assembly model, and tools for SCA development.

Uploaded by

abdel_lak
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 16

Plan

1. SCA

Service Component Architecture (SCA)

1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5 Conclusion 5.

Lionel Seinturier Universit Lille 1 & INRIA


[email protected]

14/02/10
Lionel Seinturier 1 Lionel Seinturier 2

1. SCA
Constat : applications rparties (CORBA, .NET, Java EE, ) SOA

1. SCA

actuelles
souvent complexes, rigides, peu volutives Tendance SOA (Service Oriented Architecture) beso besoins s identifis de t s

Lionel Seinturier

essentiellement ti ll td des principes i i architecturaux hit t (l (logiciels) i i l )


couplage faible Components integrate with other components without needing to know how other components are implemented flexibilit Components can easily be replaced by other components services Services can be easily invoked either synchronously or asynchronously composition Composition of solutions clearly described productivit g components p to form composite p application pp Easier to integrate

interfaces bien dfinies avec une smantique lie au mtier focalisation sur l'change des donnes mtier protocoles de communication standardiss recombinaison flexible de services pour amliorer la flxibilit du logiciel

vision
A service is an abstraction that encapsulates a software function Developers build services, use services and develop solutions that aggregate services Composition of services into integrated solutions is a key activity
3

souvent organiss autour des Web Services (mais pas

ncessairement)
SOAP (HTTP (HTTP, XML) XML), WS-* WS- , orchestration BPEL

Lionel Seinturier

1.1 Principes SCA (Service Component Architecture)


a component model for SOA 11/2005

1.1 Principes
A set of specifications (15) (09/2008) Assembly model
how to define structure of composite applications extension for event processing and publish/subscribe how to write business services in particular languages Java, C++, Spring, BPEL, EJB SLSB, COBOL, C how to access services Web services, JMS, JCA, EJB how to add infrastructure services security, transaction, reliable messaging SCA Java J EE Integration I t ti SCA OSGi/Spring (draft)

Component implementation specifications

Hosted by the Open SOA consortium


http://www.osoa.org

Binding g specifications p

Standardized by OASIS
http://www.oasis-opencsa.org

Policy framework

Platform providers
O Open Source: S Apache Tuscany, Newton, Fabric3, 3 FraSCAti SC Vendors: IBM WebSphere FP for SOA, TIBCO ActiveMatrix, Covansys SCA Framework, Paremus, Newton, Rogue Wave HydraSCA, Oracle Fusion Middleware
Lionel Seinturier 5

Integration

+ SDO for accessing data sources


Lionel Seinturier 6

1.1 Principes Vision SCA


composants p de service g gros g grain ( (interfaces avec

1.1 Principes Composant SCA


service/rfrence proprit implmentation proprit it non

mthodes orientes mtier) assembls partir de composants grain plus fin


s'abstraire des dtails du middleware conformance avec les standards existants spcifications ouvertes, multi-vendeurs couplage faible pour permettre l'agilit l agilit capitaliser sur les pratiques du SOA

fonctionnelle (intent)

Lionel Seinturier

Lionel Seinturier

1.1 Principes Assemblage SCA

SCA assembly
Order Processing Service
OrderProcessing Component

RMI/IIOP A AccountsComposite t C it
Payment Service
Payments Component

External Banking Reference

Accounts Ledger Component

Java EE

BPEL SOAP/HTTP

Multi-level composition
WarehouseComposite
External Warehouse Reference

Warehouse Service

Warehouse Broker Component

Warehouse Component

Mixed: - technologies - app locations


Shipping Reference

JMS C++

Lionel Seinturier

OpenCSA Member Section Service Component Architecture

10

1.1 Principes Assemblage SCA


service/rfrence
type langage de dfinition d'interface (IDL) : Java ou WSDL binding : association avec une technologie de communication

1.1 Principes SCA


indpendances
langage de programmation langage de dfinition d'interfaces protocoles de communication proprits non fonctionnelles

liens
rfrence f vers service i : wire i service/service ou rfrence/rfrence : lien de promotion (promote)

Lionel Seinturier

11

Lionel Seinturier

12

Plan

1.2 Modle de programmation


Assembly model (language)
ADL bas XML

1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5 Conclusion 5.

Component implementations
1 ensemble de rgles de programmation par langage
mapping Java : utilise annotations Java 5

1. SCA/Java in a Nutshell 2 SCA/Java 2. SCA/J i aN in Nutshell t h ll avec Web W bS Services i 3. Modle de programmation Java 4. Quelques outils
STP/SCA Composite Designer FraSCAti Explorer
Lionel Seinturier 13 Lionel Seinturier 14

1.2.1 SCA/Java in a Nutshell


Principales annotations
@Service
les services fournis p par le composants p sapplique la classe dimplmentation du composant paramtres interfaces : les services fournis p par le composant p value : raccourci si un seul service fourni

1.2.1 SCA/Java in a Nutshell


Exemple Hello World
un composite un sous-composant Serveur fournissant une interface
de nom s de signature
interface MyService { void print(String msg); }

un sous-composant Client fournissant une interface


de nom r de signature java.lang.Runnable exporte au niveau du composite

@Reference
les services requis par un composant sapplique un attribut (field), un setter ou un paramtre de constructeur paramtres t name : le nom du service requis required : true si le rfrence est obligatoire (par dfaut true)

Client Cli t requiert i t le l service i fournit f it par linterface li t f sd de S Serveur

Lionel Seinturier

15

Lionel Seinturier

16

1.2.1 SCA/Java in a Nutshell


Exemple Hello World Composant Serveur @Service(value=MyService.class) public bli class l ServeurImpl l i implements l MyService i { public void print( String msg ) { System out println(msg); System.out.println(msg); } }

1.2.1 SCA/Java in a Nutshell


Exemple Hello World Composant Client @Service(value=Runnable.class) public class ClientImpl implements Runnable { @Reference(name="s") private MyService service; public bli void id run() () { service.print("Hello world!"); } }

Lionel Seinturier

17

Lionel Seinturier

18

1.2.1 SCA/Java in a Nutshell


Exemple Hello World Assemblage

1.2.1 SCA/Java in a Nutshell


Exemple Hello World Assemblage (suite et fin)
<component name="serveur">

<?xml ?xml version="1.0" version 1.0 encoding encoding="UTF-8"?> UTF 8 ? <composite name="hw" xmlns="http://www.osoa.org/xmlns/sca/1.0"> <component name="client"> <implementation.java class="hw.ClientImpl"/> <service name="r"> <interface.java interface="java.lang.Runnable"/> </service> <reference name="s"> <interface.java interface="hw.MyService"/> </reference> </component> p

<implementation.java class="hw.ServeurImpl"/> <service name="s"> <interface.java interface="hw.MyService"/> <service> <component>

<wire source="client/s" target="serveur/s"/> <service name="r" promote="client/r"> <interface.java interface="java.lang.Runnable"/> </service> </composite>

Lionel Seinturier

19

Lionel Seinturier

20

1.2.2 SCA/Java in a Nutshell avec Web Services Hello World en distant avec Web Services

1.2.2 SCA/Java in a Nutshell avec Web Services


Hello World en distant avec Web Services Composant Serveur
<composite name="serveur">

<service name="s" promote="serveur/s"> <interface.java interface="hw.MyService"/> <binding.ws uri="http://localhost:9000/HelloService"/> </service>


<component name="serveur"> <implementation.java class="hw.ServeurImpl"/> <service name="s"> <interface.java interface="hw.MyService"/> </service> </component> </composite>

Lionel Seinturier

21

Lionel Seinturier

22

1.2.2 SCA/Java in a Nutshell avec Web Services


Hello World en distant avec Web Services Composant Serveur

1.2.2 SCA/Java in a Nutshell avec Web Services


Hello World en distant avec Web Services Composant Client
<composite name="client"> <service name="r" promote="client/r"> <interface java interface="java <interface.java interface= java.lang.Runnable lang Runnable"/> /> </service>

<reference name="s" promote="client/s"> <binding.ws wsdli:wsdlLocation="http://localhost:9000/HelloService?wsdl" wsdlElement="#wsdl.port(MyService/MyServicePort)" /> </reference>


<component name="client"> <implementation.java class="hw.ClientImpl"/> <service name="r"> <interface.java interface="java.lang.Runnable"/> </service> <reference name="s"> <interface.java interface="hw.MyServicePortType"/> </reference> </component> </composite>

Lionel Seinturier

23

Lionel Seinturier

24

1.2.2 SCA/Java in a Nutshell avec Web Services


Hello World en distant avec Web Services
spcificit pile Web Services Apache CXF (utilise par FraSCAti)

1.2.3 Modle de programmation Java


Fonctionnalits SCA

25

@Service(value=Runnable.class) public class ClientImpl p p implements p Runnable { @Reference(name="s") private MyServicePortType service; public void run() { service.print("Hello world!"); } }

services requis cardinalit multiple proprits politique d'instanciation des composants initialisation/destruction des instances types d'implmentation d implmentation nom du composant (tel que dfini dans .composite) mthode asynchrone mode conversationnel mcanisme de rappel contexte d d'excution excution API de reconfiguration (spcifique FraSCAti) bindings intents
26

Lionel Seinturier

Lionel Seinturier

1.2.3 Modle de programmation Java


Fonctionnalits SCA

1.2.3 Modle de programmation Java


services requis cardinalit multiple @Reference
List<Service> services; <wire source="client/s" target="comp1/serv1 comp2/serv2" />

SCA Assembly Language (ADL) Service Component Architecture Assembly Model Specification Version 1.1 Java Component Implementation Component Architecture SCA-J Common Annotations and APIs Specification Version 1.1 Source OASIS Open Composite Services Architecture (CSA) http://www.oasis-opencsa.org

proprits
@Property : field, setter ou paramtre d'un constructeur < <property t name="aProp">aVal</property> " P "> V l</ t >

peuvent tre promues sur un composite (mme principe que pour les services, rfrences)
POJO

Remarques souvent plusieurs faons d'exprimer les concepts exemple : <wire> et <reference target=""> redondance d d d'i d'information f ti entre t ADL et tJ Java compltion, consistence assurer

annotations @Reference et @Property peuvent tre omises conventions de nommage " la JavaBean" avec setter/getter
27 Lionel Seinturier 28

Lionel Seinturier

1.2.3 Modle de programmation Java


politique d'instanciation des composants
@Scope("COMPOSITE") class ServeurImpl implements MyService {

1.2.3 Modle de programmation Java


initialisation/destruction des instances
@EagerInit @Scope("COMPOSITE") class MyCompImpl() { @ @Init t void myMethInit() { ... } @Destroy void myMethDestroy() { ... } }

COMPOSITE singleton (dure de vie lie au composite parent) instance cre la demande lors de la 1re invocation de service REQUEST : une instance i t par requte t CONVERSATION : une instance par client STATELESS (par dfaut) pas de garantie sur l'tat similaire EJB stateless session bean
Lionel Seinturier 29

@Init @ : la cration de l'instance @Destroy : la destruction de l'instance @EagerInit pour composant @Scope("COMPOSITE") @Scope( COMPOSITE ) excution @Init au dmarrage du composite
sans @EagerInit, excution @Init la cration de l'instance donc invocation l la 1re i ti
30

Lionel Seinturier

1.2.3 Modle de programmation Java


types d'implmentation
<implementation.java class="org.myp.MyClassImpl" /> <implementation.composite name="myFile.composite" />

1.2.3 Modle de programmation Java


nom du composant (tel que dfini dans .composite) @ComponentName String myCompName; mthode asynchrone @OneWay void myMethOneWay( ... ) { ... }

ncessaire ds hirarchie p profondeur > 2 utilisation de namespaces XML en cas de rpertoires diffrents
<composite name="top" xmlns:dir1="myDir/subDir" > <component name="sub1"> <implementation.composite name="dir1:myFile.composite"/> </component> </ </composite> it >
Lionel Seinturier 31

Lionel Seinturier

32

1.2.3 Modle de programmation Java


mode conversationnel interface @Conversational interface Cart { void addItem( ... ); void id removeItem( It ( ... ) ); @EndsConversation void orderNow(); } mode conversationnel composant @Scope("CONVERSATION") @ConversationAttributes( maxAge="2 minutes", maxIdleTime="30 seconds") // optionels p format dfini p par les spcifications p SCA class CartImpl implements Cart { @ConversationID void Object conversationID; ... }

1.2.3 Modle de programmation Java


mcanisme de rappel
<component name="client"> < <service i name="r" " " /> <reference name="s" target="serveur/s"> <interface.java j interface="hw.MyService" y callbackInterface="hw.MyCallBackItf" /> </reference> <implementation.java class="hw.ClientImpl"/> </component>

Lionel Seinturier

33

Lionel Seinturier

34

1.2.3 Modle de programmation Java


mcanisme de rappel interfaces interface MyCallBackItf { void notify( Object info ); }
@Callback(MyCallBackItf.class) @ ( y ) interface MyService { void print( String msg ); }

1.2.3 Modle de programmation Java


contexte d'excution @Context ComponentContext myCompCtx;

mcanisme de rappel composants class ClientImpl implements Runnable, MyCallBackItf { void notify( Object info ) { ... }
@Scope("COMPOSITE") class ServeurImpl implements MyService { @Callback MyCallBackItf cb; void print( String msg ) { cb.notify("rappel"); ... } }
Lionel Seinturier 35

API de reconfiguration (spcifique FraSCAti) @Context ReconfigurableComponentContext myCompCtx;

Lionel Seinturier

36

1.2.3 Modle de programmation Java

1.2.3 Modle de programmation Java


bindings RMI (spcifique FraSCAti)

bindings Web Service <binding.ws> binding.ws wsdli:wsdlLocation="URI wdsl" URI pour accder au WSDL du service ventuellement : liste de plusieurs URI alternatives xmlns:wsdli="http://www.w3.org/2004/08/wsdl-instance" wsdlElement (optionel)
<WSDL-namespace-URI>#wsdl.port(<service-name>/<port-name>) <WSDL-namespace-URI>#wsdl.port(<service-name>/<endpoint-name>) <WSDL-namespace-URI>#wsdl.service(<service-name>)
recherche du portType ou du endPoint compatible

<frascati:binding.rmi> xmlns:frascati="http://frascati.ow2.org/xmlns/sca/1.1" host serviceName


WSDL 1.1 WSDL 1.2

: adresse machine : identifiant : numro de port

port

<WSDL-namespace-URI>#wsdl.binding(<binding-name>) p g( g )

SCA

<reference name="weather"> <binding.ws wsdli:wsdlLocation="http://www.webservicex.net/globalweather.asmx?wsdl" wsdlElement="http://www.webservicex.net#wsdl.port(GlobalWeather/GlobalWea therSoap)" /> </reference>

<service name="s"> <frascati:binding.rmi host="localhost" serviceName="rmiservice" port="1099" /> </service>

Lionel Seinturier

37

Lionel Seinturier

38

1.2.3 Modle de programmation Java


bindings REST (spcifique FraSCAti)

1.2.3 Modle de programmation Java


intent mcanisme dclaratif permettant de spcifier un besoin non fonctionnel specification : SCA Policy Framework
intents spcifiques p q scurit : @Authentication, @Confidentiality, @Integrity intents gnraux annotation : @Requires @ q Assembly Language : requires="" sur <service>, <reference> (sur <composite>, <component> => <service>, <reference>) policy set : groupement d'intents dclaration uniquement mise en uvre platform-specific F SCAti FraSCAti chaque service non fonctionnel est un composant (ou composite) SCA liaison d'interception " la AOP" entre composants applicatifs et composant non fonctionnel
40

<frascati:binding.rest> f xmlns:frascati="http://frascati.ow2.org/xmlns/sca/1.1" uri : URI du service utilisation conjointes des annotations JAX-RS

<service name="s"> <frascati:binding.rest uri="http://localhost:8080/CounterService" /> </service>


public interface CounterService { @GET @Path("/") @Produces("text/plain") int getValue(); @POST @Path("/incr") void increment(int v);
Lionel Seinturier 39 Lionel Seinturier

@POST @Path("/decr") void decrement(int v); @POST @Path("/reset") void resetIt(); }

1.2.3 Modle de programmation Java


intent
intent

1.2.3 Modle de programmation Java

dfinition d'un d un besoin non fonctionnel de trace requires="fichier.composite" <composite name="serveur" > <service name="s" promote="serveur/s" /> <component name="serveur"> <implementation.java class="hw.ServeurImpl"/> <service name="s" requires="trace"> <interface.java interface="hw.MyService"/> </service> </component> </composite> / i

Lionel Seinturier

41

Lionel Seinturier

42

1.2.3 Modle de programmation Java


intent

1.2.3 Modle de programmation Java


intent p du besoin non fonctionnel implantation org.ow2.frascati.tinfi.control.intent IntentHandler : service fournis par un composant non fonctionnel IntentJoinPoint : API d'introspection du point d'interception

dfinition d'un d un .composite composite "normal" normal pour le besoin non fonctionnel Fichier: trace.composite <composite name="trace" > <service name="t" promote="traceur/t" /> <component name="traceur"> <implementation.java class="hw.TraceurImpl"/> <service i name="t"> " " <interface.java interface="hw.MyTraceurItf"/> </service> </component> </composite> / p

@Scope("COMPOSITE") @Service(IntentHandler.class) public class TraceurImpl implements IntentHandler { public Object invoke( IntentJoinPoint ijp ) throws Throwable { // ... code avant ... Object j ret = ijp.proceed(); jp p (); // ... code aprs ... return ret; } }

Lionel Seinturier

43

Lionel Seinturier

44

1.2.3 Modle de programmation Java


Conclusion
un modle de composants pour la SOA base : annotations Java 5 + ADL XML nombreuses similitudes avec autres modles de composants

1.2.3 Modle de programmation Java Conclusion Autres fonctionnalits proprits complexes dont le type est dfini par un schma XML <include> i l d autowire constraining type packaging SCA .zip autres bindings existants : JMS, EJB SLSB, JCA autres component implementations : C++,
45 Lionel Seinturier 46

( (Fractal/Fraclet, , OSGi, , iPOJO, , ) ) SCA s'arrte au dploiement pas de mcanisme de reconfiguration d d'o o extensions, extensions e e.g. g FraSCAti

souvent plusieurs faons d'exprimer les concepts

exemple : <wire> et <reference target="">


redondance d'information entre ADL et Java

p , consistence assurer compltion,


Lionel Seinturier

Plan

1.3 Outils Eclipse STP/SCA Composite Designer

1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5 Conclusion 5.

Lionel Seinturier

47

Lionel Seinturier

48

1.3 Outils OW2 FraSCAti Explorer

Plan

1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5 Conclusion 5.

Lionel Seinturier

49

Lionel Seinturier

50

1.4 FraSCAti
Middleware platform for SCA
OW2 Project since Oct 2008 http://frascati.ow2.org LGPL SCA++

1.4 FraSCAti Platform Architecture

dynamic deployment & configuration distributed deployment with FDF/DeployWare runtime i adaptation d i & reconfiguration fi i introspection & reconfiguration support via Fractal reconfiguration of SCA components & FraSCAti itself reflective SCA platform lightweight, efficient, predictable, scalable

Lionel Seinturier

51

Lionel Seinturier

52

1.4 FraSCAti

1.4 FraSCAti

Plate-forme pour SCA en SCA SCA tous les niveaux plate-forme, services non fonctionnels, services applicatifs vision homogne d'un systme SOA p , maintenance, , tests mme outils conception, Assembly Factory p parser EMF, XML Schemas dfinis dans les spcifications p invoque la Binding Factory et l'Assembly Factory cre les wires (connecte les composants entre eux) fixe la valeur initiale des proprits associe les services fonctionnels aux composants applicatifs Binding Factory gre les interactions avec le monde extrieur framework Fractal gnre des composants stub/skeleton de communication distante (e.g. RMI, REST, WS) de liaison "quelconque" (e.g. OSGi)
53

Component Factory instancie les composants utilise Tinfi personnalit Fractal pour SCA dfinit membranes (conteneurs) implantant la smantique d'excution d excution SCA chaque composant FraSCAti SCA a une double personnalit API SCA API Fractal
permet de rutiliser les outils Fractal existants

Chane de production gnration/compilation de code utilise Spoon, Eclipse JDT, Juliac, etc. utilisable off-line, ff online code de la plate-forme gnr/compil off-line code des applications/services techniques gnr/compil off-line ou online

Lionel Seinturier

Lionel Seinturier

54

1.4 FraSCAti Capacits de reconfiguration


wire proprits hirarchie de composants bindings
Conclusion

1.4 FraSCAti

plate-forme SCA reconfigurable vision homogne d'un d un systmes SOA

changement de composant stub/skeleton changement de proprit (e.g. URL WS)


instantiation/retrait dynamique de composants dploiement distance

Autres fonctionnalits packaging .war pour dploiement dans un serveur d'applications utilisation de FScript pour la reconfiguration service i d de t transaction ti implementation types Fractal, OSGi, Scala, Spring, script languages (Groovy, etc.)
binding types

via le framework FDF/DeployWare


Lionel Seinturier 55

OSGi

Lionel Seinturier

56

Plan

1.5 Conclusion
SCA yet another component model
une faon de revisiter les problmatiques de la rpartition des services pour les plates-formes middleware des concepts des frameworks de composants renforce l'ide de l'indpendance services/implmentations

1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5 Conclusion 5.

point original : indpendance IDL/protocole/langage/intent

Lionel Seinturier

57

Lionel Seinturier

58

1.5 Conclusion
SCA vs CORBA, .NET
nouvelle tentative autour du "middleware universel universel" pour faire communiquer l'existant met plus l'accent sur le modle de programmation (software engineering) des applications que sur l'architecture de la plate-forme middleware (product dependant) SCA met plus l'accent sur l'ADL et le support de l'htrognit g OSGi met l'accent sur le cycle de vie des composants et la dcouverte de services dveloppeurs d'application vs fournisseur de solutions middleware application vs plate-forme API de dveloppement d'applications vs SPI d'hbergement de modules SPI de JBI ne sont pas destines tre exposes aux dveloppeurs component type/binding vs service engine/binding component programmation g vs kernel et architecture ouverte p pour composer p des modle de p services en vue de fournir une plate-forme
59 Lionel Seinturier 60

SCA vs OSGi

SCA vs JBI

Lionel Seinturier

Rfrences
Spcifications
OpenSOA p OASIS OpenSCA Javadoc T Tuscany Newton Fabric3 FraSCAti STP/SCA www.osoa.org g www.oasis-opencsa.org frascati.ow2.org/SCA-API t tuscany.apache.org h newton.codecauldron.org xircles.codehaus.org/projects/fabric3 g frascati.ow2.org www.eclipse.org/stp/sca

Plates-formes

Outils Ressources
www.osoa.org/display/Main/SCA+Resources www-128.ibm.com/developerworks/library/specification/ws-sca/ www.davidchappell.com/articles/Introducing_SCA.pdf wwwwww 128.ibm.com/developerworks/websphere/techjournal/0510_brent/0509_brent.ht ml www.osoa.org/download/attachments/250/Power_Combination_SCA_Spring_O SGi.pdf?version=3

Lionel Seinturier

61

You might also like