Titel und Inhalt

Werbung
SCA mit Apache Tuscany
SIG Java, Komponenten-Frameworks OSGi, SCA & Co.
Marcel Hochstein, Java Consultant
Opitz Consulting Gummersbach GmbH
Hannover, 18.Januar.2011
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 1
Agenda
1.
Was ist SCA?
2.
Grundlagen Tuscany
3.
Die Laufzeitumgebung
4.
What‘s next?
5.
Fazit
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 2
1.
Was ist SCA?
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 3
Was ist SCA ?
Service Component Architecture:
• Bietet Spezifikation zur
Implementierung,
Assemblierung und zum
Deployment von Komponenten
properties
Java interface
WSDL portType
Grundsätze:
• Technologie-abstrahierend
• Integration
• Wiederverwendung
• Loose Kopplung
Marcel Hochstein -SCA mit Apache Tuscany
S
S
service
C1
R
wire
Binding:
SOAP
JMS
JCS
…
S
C2
component
R
R
reference
composite
© OPITZ CONSULTING GmbH 2010
Seite 4
Was ist SCA ?
properties
Service Component Architecture:
• Component Model
• Assembly Model
Java interface
WSDL portType
S
S
service
• http://www.OSOA.org
C1
R
wire
Binding:
SOAP
JMS
JCS
…
S
C2
component
R
R
reference
composite
• Standardisiert bei OASIS:
• SCA/SDO goes to OASIS, could be to SOA what Java EE was to
n-tier computing
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 5
SCA Entstehung
OSOA Partner:
• Entwickelt von Open SOA
(http://www.osoa.org)
• Weitere OSOA Spezifikation:
Service Data Objects
OSOA Supporter:
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 6
OASIS Technical Commitees
 März 2007: Übergabe an OASIS (http://www.oasis-open.org)
 Weiterentwicklung der SCA Spec durch 6 OASIS Technical
Commitees:






OASIS SCA / Assembly (SCA-Assembly) TC
OASIS SCA / Policy (SCA-Policy) TC
OASIS SCA / Bindings (SCA-Bindings) TC
OASIS SCA / BPEL (SCA-BPEL) TC
OASIS SCA / C and C++ (SCA-C-C++) TC
OASIS SCA / Java (SCA-J) TC
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 7
Umfang
16 Teilspezifikationen:
4 Basisspezifikation
8 Implementierungsspezifikationen
4 Bindingspezifikationen
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 8
Basisspezifikationen
16 Teilspezifikationen:
4 Basisspezifikation
8 Implementierungsspezifikationen
4 Bindingspezifikationen
Spezifikation
Veröffentlicht am
SCA Assembly Model V1.00
21. März 2007
SCA Policy Framework V1.00
21. März 2007
SCA Transaction Policy V1.00
03. Dezember 2007
SCA Assembly Extensions for Event Processing V1.00
30. April 2009
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 9
Implementierungsspezifikationen
16 Teilspezifikationen:
4 Basisspezifikation
8 Implementierungsspezifikationen
4 Bindingspezifikationen
SCA
Veröffentlicht am
SCA Java Common Annotations and APIs V1.00
21. März 2007
SCA Java Component Implementation V1.00
21. März 2007
SCA Spring Component Implementation V1.00
21. März 2007
SCA BPEL Client and Implementation V1.00
21. März 2007
SCA C++ Client and Implementation V1.00
21. März 2007
SCA COBOL Client and Implementation V1.00
24. September 2007
SCA C Client and Implementation V1.00
24. September 2007
SCA Java EE Integration Specification V1.00
03. Juli 2008
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 10
Bindingspezifikationen
16 Teilspezifikationen:
4 Basisspezifikation
8 Implementierungsspezifikationen
4 Bindingspezifikationen
Spezifikation
Veröffentlicht am
SCA Web Services Binding V1.00
21. März 2007
SCA JMS Binding V1.00
21. März 2007
SCA EJB Session Bean Binding V1.00
21. März 2007
SCA JCA Binding V1.00
05. November 2007
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 11
SCA Component
PROPERTIES
SERVICES
Impl
IMPLEMENTATION
REFERENCES
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 12
Implementation
 konkrete Implementierung von Geschäftslogik
 in einer beliebigen, von der SCA Runtime
unterstützten, Programmiersprache
SCA Component
Impl
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 13
Service
 von Implementierung bereitgestellter Service
SCA Component
Impl
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 14
Reference
 von Implementierung verwendete Services
SCA Component
Impl
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 15
Properties
• Konfiguration der Implementierung
zum Deployment-Zeitpunkt
SCA Component
Impl
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 16
SCA Component
 Verwendet konkrete Implementierung von Geschäftslogik
 Kapselt verwendete Programmiersprache
 Stell Funktionalität als Services zur Verfügung (Service Provider)
 Verwendet andere Services (Service Consumer)
 Konfiguriert Implementierung über Properties
PROPERTIES
SERVICES
Impl
IMPLEMENTATION
REFERENCES
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 17
Component Deklaration mit Annotationen
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 18
Component Deklaration durch componenttype
Service Component Definition Language
(SCDL)
<componentType xmlns="http://www.osoa.org/xmlns/sca/1.0">
<service name="MyValueService">
<interface.java interface="services.myvalue.MyValueService"/>
</service>
<reference name="customerService">
<interface.java interface="services.customer.CustomerService"/>
</reference>
<reference name="stockQuoteService">
<interface.wsdl interface="http://www.stockquote.org
/StockQuoteService#wsdl.interface(StockQuote)"/>
</reference>
<property name="currency" type="xsd:string">USD</property>
</componentType>
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 19
SCA Interface
 Schnittstellendefinition von Services und References:
•
•
•
•
Local Interface
Remote Interface
Bidirectional Interface
Conversational Interface
 Aktuell sind Definitionen in WSDL oder durch Java
Interfaces möglich
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 20
Interfaces - Sichtbarkeit
Remote Interface
package services;
@Remotable
public interface AccountService {
String hello(String message);
}
• Remote Services können aus anderen Prozessen / aus
anderen Laufzeitumgebungen) aufgerufen werden.
• Call By Value
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 21
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 22
Service Component Definition
Language (SCDL)
SCA Composite
<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
targetNamespace="http://sample“ xmlns:sample="http://sample“ name="Calculator">
<component name="CalculatorServiceComponent">
<implementation.java class="calculator.CalculatorServiceImpl"/>
<reference name="addService" target="AddServiceComponent" />
<reference name="subtractService" target="SubtractServiceComponent" />
</component>
<component name="AddServiceComponent">
<implementation.java class="calculator.AddServiceImpl"/>
</component>
<component name="SubtractServiceComponent">
<implementation.java class="calculator.SubtractServiceImpl"/>
</component>
</composite>
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 23
Wiring
 Verknüpfung von References und Services
 Autowiring kompatibler References / Services
durch SCA Runtime möglich
 Definiert durch Interfaces, Bindings und
definierten Policies
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 24
Bindings
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 25
Bindings
 definieren Protokoll für Kommunikation
mit Service / Reference
 pro Services / Reference können mehrere Bindings
definiert werden.
 Trennung von Geschäftslogik (implementation),
Infrastrukturcode (binding) und
Infrasturkturkonfiguration (composite)
 Binding-Abstraktion ermöglicht Nutzung von
Alternativen zu Webservices
 SCA spezifiziert Web Service-, JMS-, EJB Session Bean- und JCABinding
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 26
Intents / Policies
 Intents:
 Abstrakte Definition von nicht funktionalen Anforderungen
(QoS)
 Unabhängig von Binding und Laufzeitumgebung
 Definition bzw. Abbildung auf Policies / Policysets erfolgt
domainweit in definitions.xml
•
Von SCA Spezifikation definierte Security Intents:
 Authentication, Confidentiality, Integrity
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 28
SCA Domain
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 29
SCA Domain - Funktionen
 Funktionen einer Domain:
 Management und Governance:
 Verwaltung von Komponenten und deren Lebenszyklus
 Globale Konfiguration von Policies:
 Security, authentication, reliability
 Bereitstellung der grundlegenden
Kommunikationsinfrastruktur:
 Wiederverwendung von Resourcen und Artefakten
ermöglichen:
 z.B.: über Repository
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 30
SCA Domain – technische Sicht
 Konstrukt aus kompatiblen SCA
Middlewarekomponenten (des selben Anbieters)
 Composites werden in die Domain deployed
 ‚Container‘ für Components unterschiedlicher
Implementierungs-Technologien
 Repräsentiert Laufzeitumgebung
 Begrenzt Sichtbarkeit von Components
=> keine domainübergreifenden Composites möglich
=> Wires, Policies und Intents sind nur in den
Grenzen einer Domain anwendbar
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 31
Anwendungsintegration
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 32
Enterprise Architecture
 SCA Domains managen Applikationen, die aus
Services zusammengesetzt sind
 Web Services werden verwendet, wenn
Interoperabilität benötigt wird:
 Bei Nicht-SCA Endpunkten (z.B. .NET)
 Zwischen SCA Domains
 Intern in einer SCA Domain, wenn Services mit „non-common
technologies“ angebunden werden sollen
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 33
Spring Component Implementation Specification
 Beschreibt, wie das Spring Framework zur Implementierung von
SCA Components verwendet werden kann.

Einbindung eines bestehenden Spring application context als Implementierung
einer SCA component
 Integration einer Spring basierten Component ohne
Anpassungen des Application Contextes.
 Keine Notwendigkeit für SCA spezifische Metadaten in die Spring Konfiguration.
 Spring Kontext benötigt wenig Wissen über SCA Umgebung.
 Berührungspunkte sind Services und References.
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 34
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 35
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 36
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 37
Spring Component Implementation Specification
 SCA stellt ein Model für verteilte servicebasierte
Anwendungen dar
 Spring ist ein Framework zur Erstellung von
Servicekomponenten aus einfachen Javaobjekten
 SCA and Spring ergänzen sich, um verteilte
servicebasierte Anwendungen zu implementieren
 SCA fokusiert “wiring-in-the-large” vs. “wirinig-in-the-small”
 SCA erweitert das Potenzial von Spring
Komponenten:
 Spring Beans, die als SCA Service Komponenten veröffentlicht werden ,
sind erreichbar für
 andere SCA Components
 entfernte Clients
 Anbindung externer Services über References
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 38
2.
Apache Tuscany
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 39
Apache Tuscany
 Apache Projekt
 Java Implementierung,
Aktuelle Version 1.6.1 (Nov. 2010)
 Umfasst folgende Teilprojekte:
 SCA Java Implementierung
 SCA Native (C++) Implementierung
 SDO Java Implementierung
 SDO C++ Implementierung
 DAS Java Implementierung
 DAS C++ Implementierung
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 40
Apache Tuscany
 Implementierungen der wichtigsten SCA Specs:








SCA Assembly Model V1.0
SCA Policy Framework V1.0
SCA Java Common Annotations and APIs V1.0
SCA Java Component Implementation V1.0
SCA Spring Component Implementation V1.0
SCA BPEL Client and Implementation V1.0
SCA Web Services Binding V1.0
SCA EJB Session Bean Binding V1.0
 Unterstützte Interfacedefinitionen:
 Java
 WSDL 1.1
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 41
Apache Tuscany
 Einige Highlights:
 SCA bindings for
 Direct Web Remoting, RSS and ATOM Feeds, HTTP resources,
JSON-RPC, PUB/SUB Notifications, and RMI.
 SCA implementation types for
 OSGI, XQuery, BPEL, Widget and various dynamic languages
including Groovy, Javascript, Python and Ruby
 Databindings for
 Service Data Objects (SDO), JAXB, XmlBeans, Axis2's AXIOM,
JSON, SAXON, DOM, SAX and StAX
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 42
Service Data Objects
 Spezifikation zur Vereinheitlichung der Handhabung von
Daten
- unabhängig von Programmiersprache
- unabhängig von Datenquelle (DB, XML,..)
 Entstehung stark mit SCA gekoppelt
 generell aber unabhängige und eigenständige Spezifikation
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 43
SDO Data Objects
 DataObject : Enthält Daten als Properties und Verweise auf
weitere DataObjects (Containment oder Reference)
Department
Id
Name
Marcel Hochstein -SCA mit Apache Tuscany
Employee
© OPITZ CONSULTING GmbH 2010
Seite 44
Data Access Service
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 45
SDO DataGraph
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 46
3.
Tuscany Laufzeitumgebung
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 47
Die Tuscany Laufzeitumgebung
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 48
4.
Ausblick
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 49
What‘s next?
 SCA 1.1
 Compliance Test Suite
 Service Model für Cloud Computing
 Tuscany 2.0
 Implementiert SCA 1.1
 OSGi basiert
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 50
5.
Fazit
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 51
Schwächen von SCA
 Bisher keine Spezifizierung der Integration von SCA
Domains unterschiedlicher Hersteller
 Viele Features können nur innerhalb einer SCA
Domain genutzt werden.
 Kritisch: Standardkonformität der SCA
Laufzeitumgebungen
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 52
Stärken von SCA
 Abstraktion von konkreten Technologien
 Trennung von Implementierung und Architektur
 Modellierung kann prinzipiell ohne umfassendes Technologie-Know
How erfolgen (Prototyping)
 Technologien werden austauschbar
 Loose Kopplung über technologiebedingte Barrieren
hinweg
 XML basierte SCA-Definitionen dokumentieren
Architektur
 Standardisierung der Handhabung von
Middlewarekomponenten
 Erhöhte KnowHow-Portabilität
 Erhöhte Code-Portabilität
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 53
Fazit Tuscany
 Hohe Standardkonformität
 Quasi-Referenzimplementierung
 Breiter Spezifikationsabdeckung
- Was ist mit SCA alles möglich?
 Integration zusätzlicher Technologien
 Erweiterbare Architektur
 Komplex -> Einstieg schwer
 Wissen über interne Mechanismen/Module erforderlich
 Bisher wenig Literatur erhältlich
 Expertensystem?
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 54
Fazit SCA
 Keine bzw. geringe Reduzierung der Herstellerbindung durch
SCA
 Schwerpunkt liegt auf Portabilität und nicht auf
Interoperabilität.
 Zur Integration von Anwendungen auf Systemen verschiedener
Hersteller, greift SCA auf Standard Web Services zurück, ohne Mehrwert.
 Modellierung von Softwaresystemen auf Basis von Service
Orientierter Architekturen mit SCDL
 SCA's Service Component Definition Language (SCDL)
 Standartisiertes Vokabular zur Beschreibung von components
und composites
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 55
Literatur
 „Tuscany SCA in Action“
Simon Laws, Mark Combellack,
Raymond Feng, Haleh Mahbod,
Simon Nash
(http://www.manning.com/laws/)
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 56
Lesenswert
Einführung:
 http://www.davidchappell.com/articles/Introducing_SCA.pdf
Offizielle Links:
•
http://www.osoa.org
•
http://www.oasis-open.org
•
http://incubator.apache.org/tuscany/
Diskussionen:
 http://www.infoq.com/articles/sca-opencsa-interview
 http://www.davidchappell.com/blog/2007/05/sca-vs-soa.html
 http://searchsoa.techtarget.com/news/article/0,289142,sid26_gci12
77423,00.html
 http://www.infoq.com/news/2007/10/sca-debate
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 57
Vielen Dank für Ihre Aufmerksamkeit!
Kontaktinformationen:
Marcel Hochstein
Dipl.-Wirt.-Inf. (FH)
Java Consultant
OPITZ CONSULTING Gummersbach GmbH
Kirchstr. 6 - 51647 Gummersbach
Phone +49(0)2261/6001-0 - Fax -4200 - Mobile +49(0)173/8511412
[email protected] - www.opitz-consulting.de
Marcel Hochstein -SCA mit Apache Tuscany
© OPITZ CONSULTING GmbH 2010
Seite 58
Herunterladen