Title: SCA Tuscany 04012007
1SCA - Tuscany04/01/2007
2Agenda
- SCA
- Services
- WebServices
- Composants
- Présentation SCA
- Tuscany
- Exemple dapplication
- Développer avec Tuscany
3SCA
- Service Component Architecture
- Spécifié par IBM, BEA, Oracle (nov. 2005)
- Structurer et Composer de les Services (SOA)
- Réifier la notion de service
- Décrire les dépendances et interactions de
services
4Services
- Dans notre cadre
- Interaction entre deux machines (B to B)
- Echange de données
- Propriétés souhaitées
- Interopérabilité
- Description, contractualisation
5WebServices
- WebServices
- Accès à distance de services
- Protocole de communication quelconque (HTTP)
- Protocole de transport quelconque (SOAP - xml)
- Contrats sur les interactions entre clients /
serveur (WSDL) - Faiblement dépendant, évolution facile
6Composants
- Assemblage déléments basiques
- Réutilisabilité, Evolutivité
- Contrat sur les services fournis et requis
- Formalisme, Fiabilité, Responsabilités
- Services non fonctionnels fournis par
lenvironnement - Séparation des préoccupations
- Description darchitecture
- Vue globale de la solution
- EJB, COM, Fractal, CCM , SCA
7Service Component Architecture
Component
Service
Reference
- Service et Reference définies par
- Java Interface
- WSDL ...
- Composants implémentés
- JAVA, BPEL, JavaScript, C
8Service Component Architecture
Module
ComponentA
ComponentB
EntryPoint
Extern.service
Wire
9Service Component Architecture
- Deux niveaux de composition
- Composition de composants à petits grains
- Composition de modules à gros grains
- Liaisons entre les modules
- WebServices (SOAP)
- SCA link (appels locaux)
- RMI
- Extensible Bindings
- par exemple JMS, JCA, SLSB,serialization
adhoc
10Service Component Architecture
11Service Component Architecture
- Description de larchitecture SCDL (Service
Component Definition Language) - fichier XML définissant larchitecture
- Un fichier .module par module
- Des fichiers .subsystem optionnels
- Annotation de composant (propriétés
dassemblage) - .componentType file
- JAVA 5 annotations
12Agenda
- SCA
- Tuscany
- Projet et sous-projets
- SCA, SDO, DAS
- Récursivité de Tuscany-SCA, Perspectives
- Exemple dapplication
- Développer avec Tuscany
13Tuscany
- Groupe de travail gérant les sous-projets
- Tuscany SCA
- Tuscany SDO
- Tuscany DAS
- Indépendance relative des sous-projets
14Tuscany SCA
- Le projet Tuscany SCA
- Implémentation (de référence) de SCA
- Open source
- Licence Apache
- Environnement dexécution JAVA ou C
- (Milestone 1 sortie le 07/06/2006)
- (Milestone 2 - java sortie le 22/12/2006)
- http//incubator.apache.org/tuscany
- Intégration agile dans les S.I. existant
15Tuscany
- Service Data Object (SDO)
- Abstraction des sources de données
- Data Access Service (DAS)
- Service daccès RDB
- Transformation SDO
16Tuscany SDO
- SDO
- Abstraction de manipulation de données
- Représentation en graphe
- Historique des changements
Mode déconnecté disponible
17Tuscany SDO
18Tuscany SDO
19Tuscany DAS
- Mediator Service pour les RDB
DAS
20Solution générale
Tuscany SCA
SDO
DAS
Tuscany SDO
Tuscany DAS
21Tuscany SCA
- Une architecture extensible
- Implémentation des composants (java, javascript
) - Protocole de communication (http, smtp )
- Protocole de transport (soap )
- Manipulation des données (SDO )
- Autres services non-fonctionnels pour
lapplication - se définissant elle-même
- Tuscany modèle SCA décrit en SCDL
- http//wiki.apache.org/ws/Tuscany/TuscanyJava/Exte
nding
22Tuscany SCA
23Architecture SCA dynamique
- Des perspectives intéressantes
- Vers une architecture ubiquitaire et hautement
reconfigurable. - Dériver une personnalité SCA de Fractal
- Description hétérogène du modèle
- Déploiement de la solution FDF ?
24Agenda
- SCA
- Tuscany
- Exemple dapplication
- Calculatrice
- Evolution de calculatrice
- Développer avec Tuscany
25Exemple de calculatrice
Existant
Objectif
-
/
x
26Exemple de calculatrice
AddServiceComponent
SubstractServiceComponent
MultiplyServiceComponent
DivideServiceComponent
27Exemple de calculatrice
CalculatorServiceComponent
28Exemple de calculatrice
AddServiceComponent
SubstractServiceComponent
CalculatorServiceComponent
MultiplyServiceComponent
DivideServiceComponent
29Exemple de calculatrice
CalculatorServiceComponent
- public class CalculatorServiceImpl implements
CalculatorService - private AddService addService
- private SubtractService subtractService
- private MultiplyService multiplyService
- private DivideService divideService
- _at_Reference
- public void setAddService(AddService
addService) - this.addService addService
-
- / . . . /
- public double divide(double n1, double n2)
- return divideService.divide(n1, n2)
-
- public double multiply(double n1, double n2)
- return multiplyService.multiply(n1, n2)
30Exemple de calculatrice
ltcomposite xmlns"http//www.osoa.org/xmlns/sca/1.
0" name"CalculatorComposite"gt ltservice
name"CalculatorService"gt ltinterface.java
interface"calculator.CalculatorService"/gt
ltreferencegtCalculatorServiceComponentlt/referencegt
lt/servicegt ltcomponent
name"CalculatorServiceComponent"gt
ltimplementation.java class"calculator.CalculatorS
erviceImpl"/gt ltreference
name"addService"gtAddServiceComponentlt/referencegt
ltreference name"subtractService"gtSubtract
ServiceComponentlt/referencegt ltreference
name"multiplyService"gtMultiplyServiceComponentlt/r
eferencegt ltreference name"divideService"gt
DivideServiceComponentlt/referencegt
lt/componentgt ltcomponent name"AddServiceCompo
nent"gt ltimplementation.java
class"calculator.AddServiceImpl"/gt
lt/componentgt ltcomponent name"SubtractService
Component"gt ltimplementation.java
class"calculator.SubtractServiceImpl"/gt
lt/componentgt lt!- a completer
--gt lt/compositegt
31Exemple de calculatrice
AddServiceComponent
calculator.AddServiceImpl
SubstractServiceComponent
CalculatorServiceComponent
addService
subtractService
calculator.SubtractServiceImpl
CalculatorService
multiplyService
MultiplyServiceComponent
divideService
calculator.CalculatorServiceImpl
DivideServiceComponent
32Exemple de calculatrice
- Exemple de client de test
public class CalculatorClient public static
void main(String args) throws Exception
CompositeContext context CurrentCompositeConte
xt.getContext() CalculatorService
calculatorService
context.locateService(CalculatorService.class,
"CalculatorServiceComponent") //
Calculate System.out.println("3 2 "
calculatorService.add(3, 2))
System.out.println("3 2 " calculatorService.s
ubtract(3, 2)) System.out.println("3 2
" calculatorService.multiply(3, 2))
System.out.println("3 / 2 " calculatorService.d
ivide(3, 2))
33Evolution de calculatrice
AddServiceComponent
Java
SubstractServiceComponent
Ruby
CalculatorServiceComponent
WS
MultiplyServiceComponent
javascript
RMI
DivideServiceComponent
Java
34Evolution de calculatrice
. . . ltreference name"CalculatorRmiService"gt
ltinterface.java interface"calculator.Calc
ulatorService"/gt ltrmibinding.rmi
host"localhost" port"9999" serviceName"rmiCalcu
lator"/gt lt/referencegt ltcomponent
name"SubtractServiceComponent"gt
ltrbimplementation.rb script"SubtractImpl.rb"
class"SubtractImpl"/gt lt/componentgt . . .
35Agenda
- SCA
- Tuscany
- Exemple dapplication
- Développer avec Tuscany
36Développer avec Tuscany
- Installation des sources et exempleshttp//incu
bator.apache.org/tuscany/sca_downloads.html - Disponible en sources ou en binaires
- Disponible pour Windows ou Linux
- Disponible en C ou JAVA
- Installation dun JDK 1.5.xx
- Installation de Maven 2.0.4
- Intégration dans éclipse
- Quelques exemples
37Installation Maven 2.0.4
- Building this distribution requires a Maven 2.0.4
which can be downloaded from - http//maven.apache.org/download.html
- Installing Maven 2 ()
-
- The following instructions show how to
install Maven 2 - 1) Unpack the archive where you would like to
store the binaries, eg - tar zxvf maven-2.0.tar.gz
- or
- unzip maven-2.0.zip
-
- 2) A directory called "maven-2.0" will be
created. - 3) Add the bin directory to your PATH, eg
- export PATH/usr/local/maven-2.0/binPATH
- or
- set PATH"c\program files\maven-2.0\bin"P
ATH
38Jouer avec les exemples
- Tuscany SCA, exemples disponibles
- BigBank Scenario Sample
- BigBank Account Module
- BigBank Web Client Module
- Calculator Sample
- Calculator Combo Sample
- Calculator RMI Service Sample
- HelloWorld Web Service Async Client Sample
- JavaScript Helloworld Sample
- RMI Reference Helloworld Sample
- RMI Service Helloworld Sample
- Ruby helloworld Sample
- HelloWorld Web Service Client Sample
- HelloWorld Web Service Async Client Sample
- Inner Composite Sample
- Simple Callback Sample
- Supply Chain Sample
- Calculator Web Service Sample
39Compile Tuscany
- Build Tuscany binaries ()
-
- You should have a good computer (memory and
cpu) to compile, and at least - a DSL connexion cause 80Mo of dependencies are
needed ... - run mvn on tuscany sources directory. (twice if
an error occurs) - (download dependencies, build binaries, launch
tests) - Take a coffee, This can be quite long ...
- (15 minutes with a really good connexion and a
good CPU) -
- if ( random() SUCCEED ) ... // stupid joke
40Importation dans Eclipse
- Configure the Eclipse IDE for Tuscany ()
-
- 1) Define a classpath variable "M2_REPO" so
that Eclipse can know the path - to the local maven repository.
- Execute the following command
- gt mvn -Declipse.workspaceltpath-eclipse-worksp
acegt eclipseadd-maven-repo - (ex mvn -Declipse.workspacec\workspace_tusc
any eclipseadd-maven-repo ) - 2) Generate Eclipse configuration files
- gt mvn -Peclipse eclipseeclipse
- For more details about the maven eclipse
plugin, please refer to the - following links
- WWW http//maven.apache.org/guides/mini/guid
e-ide-eclipse.html - WWW http//maven.apache.org/plugins/maven-ec
lipse-plugin/. - 3) Load Tuscany projects into Eclipse
- You can import the project into your eclipse
workspace (From the menu bar, - select File gtImport gtExisting Projects into
Workspace). Set the "root
41Vue dans Eclipse
42- Des questions ?
- Tuscany SCA
- http//incubator.apache.org/tuscany
- tuscany-user_at_ws.apache.org ou tuscany-dev_at_ws.apac
he.org - Guillaume.Dufrene_at_lifl.fr