Service component architecture_soa_hauswald_2011

36
Service Component Architecture - Solide Basis für SOA- Prinzipien? © Zühlke 2011 23. November 2010 Alexander Hauswald Folie 1 Service Component Architecture Solide Basis für SOA-Prinzipien?

description

Die SCA-Spezifikationen (Service Component Architecture) bieten eine Implementierungsmöglichkeit für Service-orientierte Architekturen. Vorangetrieben durch eine breite Herstellerunterstützung werden viele in einer SOA vorhandenen Risiekn wie Vendor-Lock-in und Wiederverwendung/Granularität von Services adressiert. Im ersten Teil der Präsentation werden SCA-Spezifikationen vorgestelt und wie sich SCA-Komponenten in Java realisieren lassen. Der 2. Teil zeigt ein konkretes Projekt auf Basis der Oracle SOA Suite und Apache Tuscany.

Transcript of Service component architecture_soa_hauswald_2011

Page 1: Service component architecture_soa_hauswald_2011

Service Component Architecture -

Solide Basis für SOA-Prinzipien?

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 1

Service Component Architecture

Solide Basis für SOA-Prinzipien?

Page 2: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 2

Page 3: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 3

Service Design Prinzipien

1. Loose Coupling

2. Encapsulation

3. Autonomy

4. Orthogonality

5. Idempotency

6. Cohesion

Page 4: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 4

Service Component Architecture ?

• Spezifikationen, die ein Modell für das Erstellen von SOA Anwendungen beschreiben

• Deklarative Metadaten für die Konfiguration

• Abstraktionen helfen verschiedene Aspekte bei der Komposition von Systemen zu berücksichtigen

• Unterstützung von Assembly, Deployment und Runtime

Page 5: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 5

OpenSOA

• OSOA Collaboration gegründet 2005

• Konsortium von Herstellern und Firmen

• Ziel ist die Erstellung von Spezifikationen, um die Erstellung von SOA Applikationen zu beschreiben

• Draft 0.9 im Herbst 2005

• Version 1.0 im Winter 2007

• Übernahme durch OASIS– http://www.oasis-open.org/committees/tc_cat.php?cat=soa

• Version 1.1 final release Winter 2010/11 anvisiert– Eventing

Page 6: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

OpenSOA Partner

23. November 2010

Alexander Hauswald

Folie 6

Page 7: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 7

Komponentenmodelle gibt es schon

• COM / DCOM

• Java EE

• .Net Remoting / WCF

• CORBA

Page 8: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

Warum noch eines?

23. November 2010

Alexander Hauswald

Folie 8

• Bruch zwischen Modellierung, Architektur und Implementierung

• Service Orientierung � Objekt Orientierung

• Komplexität

Page 9: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 9

SCA Design Prinzipien

• Unabhängig von der Programmiersprache wie auch von der zugrunde liegenden Implementierung

• Unabhängig von der Container-Technologie

• Lose Kopplung zwischen den Komponenten

• Policies beschreiben Security, Transaction und Reliability

• Rekursive Komposition

Page 10: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 10

Spezifikationsinhalte

• Struktur – Assembly Model Spezifikation

• Implementierung einer Programmiersprache– Component Implementation Spezifikation– E.g. Java, C++

• Remoting – Binding Spezifikation– E.g. Web services, JMS, RMI-IIOP, EJB

• Infrastruktur– Policy Framework Spezifikation– E.g. Security, transactions, reliability

Page 11: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 11

Verwendung in Produkten

•Kommerzielle Anbieter– Oracle SOA Suite 11g– IBM Websphere Application Server– Tibco ActiveMatrix– Hydra Suite

•OpenSource Anbieter– Apache Tuscany– Fabric3

Page 12: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 12

SOA Standards für Oracle

Page 13: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 13

Schlüsselwörter in SCA

• Service

• Reference

•Wire

• Interface

• Binding

• Implementation

• Component

• Composite

• ComponentType

Page 14: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

Essenz

• Service

• Component

• Composite

• The Domain

23. November 2010

Alexander Hauswald

Folie 14

Page 15: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 15

SCA Assembly Domain

Page 16: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 16

• Service – extern nutzbare Funktionalität einer Implementierung

Service Konzept

Service

• Reference – Abhängigkeit zu einem externen Service

Reference

Page 17: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 17

Component Konzept

Component – konfigurierte Instanz einer Implementierung in einem composite

• Stellt service bereit

• Konsumiert services

• Konfiguriert references durch wiring von services

Component

Page 18: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 18

Component Konzept

Component Implementation – Konfigurierbares Stück Software, das eine spezifische Business Funktionalität bereitstellt

• Implementierung– Java, Spring, C++, BPEL, …

• Stellt Business Funktionen als service bereit

• Kann andere services mittels references benutzen

• services und references sind mit Interfaces getyped

• Scope – Runtime verwaltet State und Nachrichten Routing

Page 19: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 19

Component Konzept

Page 20: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 20

Composite Konzept

Composite

• Eine Zusammenstellung von Components, die gemeinsam entwickelt und deployed werden– Publicly consumable services– Service Implementierungen sind Components– Benötigte Services sind References– Hat Properties– Kann als Implementierung anderer Components verwendet werden

Composite

Page 21: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 21

Beispiel Composite

Page 22: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 22

Beispiel composite.xml

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0"

targetNamespace="http://example.org"name="…">

<service name="..." promote="A"/>

<component name="A">

<implementation ... />

<property name="...">...</property>

<service name="...">...</service>

<reference name="" target="B"/>

</component>

...

<property name="...">...</property>

<property name="...">...</property>

<reference name="" promote=“B"/>

</composite>

Page 23: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 23

Rekursive Composition

Composites und Components ähneln sich

•Konfigurierte Referencen, Services, Properties

Ein composite kann von anderen composites als component-Implementierung verwendet werden

Eine component kann durch eine „simple“ Implementierung oder ein composite umgesetzt werden

Page 24: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 24

Bindings

• Gelten für services und references

• Spezifisch für– Access Method / Protocol / Transport– Serialization– Framework

•Werden beim Deployment hinzugefügt, aber müssen kompatibel mit der darunter liegenden Implementierung sein

• Eine Anzahl an bindings sind vordefiniert, aber nur einige wenige sind required von den Herstellern

• Das binding.sca Element erlaubt extensibility und runtime defaults

Page 25: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 25

Composite Overview

Page 26: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

The Domain

23. November 2010

Alexander Hauswald

Folie 26

Page 27: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

The Big Picture

23. November 2010

Alexander Hauswald

Folie 27

Page 28: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 28

Client and Implementation Specifications

• Spezifiziert wie service components und service clients gebaut werden

• Spezifisch für eine Sprache, Framework oder API erweiterbar

• Es existieren diverse C&I Spezifikationen (es müssen aber nicht alle durch die Hersteller umgesetzt werden):– Java, BPEL, Spring Framework, C++

Page 29: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 29

Java Client und Implementierung

Implementation type for POJO

• Uses <implementation.java class=“java-class-name”>

<component name="AccountServiceComponent">

<implementation.java class =

"services.account.AccountServiceImpl"/>

...

</component>

Uses the common annotations and APIs

Page 30: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

• Interface Definition

• Reference Definition

• Property

Java Component Implementation

23. November 2010

Alexander Hauswald

Folie 30

Page 31: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 31

SCA in Java - Annotations

Common across all Java-related specifications

Implementation annotations

•@Service, @Reference, @Property

•@Scope, @Init, @Destroy, @EagerInit

•@ConversationID, @ConversationAttributes

•@ComponentName

•@Constructor

Interface annotations

•@AllowsPassByReference, @Callback

•@Remotable, @Conversational, @Oneway

Page 32: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 32

JDeveloper – Composite Editor

Page 33: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 33

Zusammenfassung

• SCA wird von einem Konsortium von Firmen und Herstellern (weiter-)entwickelt

• SCA Spezifikationen definieren eine einheitliche Plattform für die Erstellung von SOA Applikationen

• SCA bietet deklarative Konfigurationen und dynamische Aufrufmöglichkeiten

• SCA unterstützt die Service Design Prinzipien

• SCA steht nicht in Konflikt mit existierenden Technologien oder versucht diese zu ersetzen

• SCA ist die technologisch ideale Basis für eine Service-Orientierte Architektur

Page 34: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

SCA löst nicht die Probleme der Welt, aber…

• Bringt Architektur und Implementierung näher zusammen

• Einheitliche Sprache in der Service-Orientierten Welt

• Einfachheit des Komponentenmodells

• Bestandteil der SOA Technologiestacks von Oracle, Tibco, IBM, …

• Business-Orientierung ?

23. November 2010

Alexander Hauswald

Folie 34

Page 35: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

Profil Alexander Hauswald

Spezialgebiete

� Service Orientierung (Oracle)

� Cloud Computing (Azure, AWS)

Kontaktinformationen

[email protected]

� Twitter://soa_axel

Alexander Hauswald

25. Januar 2011Folie 35

Page 36: Service component architecture_soa_hauswald_2011

Service Component Architecture

© Zühlke 2011

23. November 2010

Alexander Hauswald

Folie 36

Links

OASIS SCA

http://www.oasis-open.org/committees/tc_cat.php?cat=soa

Fabric3

http://www.fabric3.org/

Apache Tuscany

http://tuscany.apache.org/

Oracle SOA

http://www.oracle.com/technology/tech/soa/index.html

Jim Marino, Michael Rowley - Understanding SCA

http://www.amazon.de/Understanding-Component-Architecture-Independent-Technology/dp/0321515080/ref=sr_1_1?ie=UTF8&s=books-intl-de&qid=1290946965&sr=8-1-spell