Professional Documents
Culture Documents
1. SCA
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) besoins identifis beso s de t s
Lionel Seinturier
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
ncessairement)
SOAP (HTTP XML) WS-*, orchestration BPEL (HTTP, XML), WS-
Lionel Seinturier
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 EE Integration J I t ti SCA OSGi/Spring (draft)
Binding specifications g p
Standardized by OASIS
http://www.oasis-opencsa.org
Policy framework
Platform providers
O Open Source: Apache Tuscany, Newton, Fabric3, FraSCAti S 3 SC Vendors: IBM WebSphere FP for SOA, TIBCO ActiveMatrix, Covansys SCA Framework, Paremus, Newton, Rogue Wave HydraSCA, Oracle Fusion Middleware
Lionel Seinturier 5
Integration
fonctionnelle (intent)
Lionel Seinturier
Lionel Seinturier
SCA assembly
Order Processing Service
OrderProcessing Component
RMI/IIOP AccountsComposite A t C it
Payment Service
Payments Component
Java EE
BPEL SOAP/HTTP
Multi-level composition
WarehouseComposite
External Warehouse Reference
Warehouse Service
Warehouse Component
JMS C++
Lionel Seinturier
10
liens
rfrence vers service : wire f i i service/service ou rfrence/rfrence : lien de promotion (promote)
Lionel Seinturier
11
Lionel Seinturier
12
Plan
1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5. 5 Conclusion
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 i a N t h ll avec W b S 2 SCA/J in Nutshell Web Services i 3. Modle de programmation Java 4. Quelques outils
STP/SCA Composite Designer FraSCAti Explorer
Lionel Seinturier 13 Lionel Seinturier 14
@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)
Lionel Seinturier
15
Lionel Seinturier
16
Lionel Seinturier
17
Lionel Seinturier
18
<?xml version="1.0" encoding="UTF-8"?> ?xml version 1.0 encoding 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
<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
Lionel Seinturier
21
Lionel Seinturier
22
Lionel Seinturier
23
Lionel Seinturier
24
@Service(value=Runnable.class) p public class ClientImpl implements Runnable { p p @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 excution d'excution API de reconfiguration (spcifique FraSCAti) bindings intents
26
Lionel Seinturier
Lionel Seinturier
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 name="aProp">aVal</property> < t " 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'i f d d d'information entre ADL et J ti t t 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
COMPOSITE singleton (dure de vie lie au composite parent) instance cre la demande lors de la 1re invocation de service REQUEST : une i t instance 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 l 1 i la re invocation ti
30
Lionel Seinturier
ncessaire ds hirarchie profondeur > 2 p 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
Lionel Seinturier
33
Lionel Seinturier
34
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
Lionel Seinturier
36
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
port
<WSDL-namespace-URI>#wsdl.binding(<binding-name>) p g( g )
SCA
Lionel Seinturier
37
Lionel Seinturier
38
<frascati:binding.rest> f xmlns:frascati="http://frascati.ow2.org/xmlns/sca/1.1" uri : URI du service utilisation conjointes des annotations JAX-RS
dfinition d'un besoin non fonctionnel de trace d un 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
dfinition d'un .composite "normal" pour le besoin non fonctionnel d un composite normal Fichier: trace.composite <composite name="trace" > <service name="t" promote="traceur/t" /> <component name="traceur"> <implementation.java class="hw.TraceurImpl"/> <service name="t"> i " " <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 ret = ijp.proceed(); j jp p (); // ... code aprs ... return ret; } }
Lionel Seinturier
43
Lionel Seinturier
44
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'o extensions, e g FraSCAti d o extensions e.g.
Plan
1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5. 5 Conclusion
Lionel Seinturier
47
Lionel Seinturier
48
Plan
1. SCA
1. Principes 2. Modle de programmation 3. Outils 4. FraSCAti 5. 5 Conclusion
Lionel Seinturier
49
Lionel Seinturier
50
1.4 FraSCAti
Middleware platform for SCA
OW2 Project since Oct 2008 http://frascati.ow2.org LGPL SCA++
dynamic deployment & configuration distributed deployment with FDF/DeployWare runtime adaptation & reconfiguration i d i 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 , , mme outils conception, maintenance, tests Assembly Factory parser EMF, XML Schemas dfinis dans les spcifications p 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, online ff 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
Autres fonctionnalits packaging .war pour dploiement dans un serveur d'applications utilisation de FScript pour la reconfiguration service d t i de transaction ti implementation types Fractal, OSGi, Scala, Spring, script languages (Groovy, etc.)
binding types
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. 5 Conclusion
Lionel Seinturier
57
Lionel Seinturier
58
1.5 Conclusion
SCA vs CORBA, .NET
nouvelle tentative autour du "middleware universel" pour faire communiquer middleware universel 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 p g pour composer des p modle de programmation vs kernel et architecture ouverte 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 Tuscany T Newton Fabric3 FraSCAti STP/SCA www.osoa.org g www.oasis-opencsa.org frascati.ow2.org/SCA-API tuscany.apache.org t 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 www www128.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