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