service components and distribution with osgi seminar: multimedia- und internetsysteme paul hübner...
TRANSCRIPT
Service components and distribution with OSGi Seminar: Multimedia- und Internetsysteme
Paul Hübner | 10.01.2011
Bildquellen : [1] http://www.osgi.org/wiki/uploads/Main/logo1.jpg[2] http://www.flickr.com/photos/jurvetson/916142
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 2
Inhalt
OSGi Einführung
Service Component Models
OSGi für Verteilte Systeme
Zusammenfassung
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 3
OSGi Architektur
Quelle: OSGi 4.2 Core Spezifikation, Seite 1-332, Abbildung 1
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 4
OSGi Bundle Lebenszyklus
Quelle: OSGi 4.2 Core Spezifikation, Seite 97-332, Abbildung 4.28
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 5
OSGi Servicelayer , SOA Pattern : Publish-Find-Bind
Service Registry
Service Provider
Service Requestor
Publish Find
Bind
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 6
OSGi Serviceorientierung
• Service Implementierung = POJO
• Beschrieben durch Java Interface
• Unabhängig von der Implementierung
• Veröffentlichen von Bundle Funktionalität
• Zentrale Service Registry durch OSGi
Framework
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 7
Inhalt
OSGi Einführung
Service Component Models
OSGi für Verteilte Systeme
Zusammenfassung
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 8
Service Orientierte Entwicklung mit OSGi
• Probleme:
• Kopplung an das OSGi Framework
Wiederverwendbarkeit
• Komplexe Implementierung eines nicht Anwendungsspezifischen Aspektes
Einfachheit , Fehleranfälligkeit, …
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 9
Lösung : Service Component Models (SCM)
• Service Component Model:– Service Vertrag zwischen OSGi Bundles
• Was muss ein Service Component Model leisten:– Keine OSGi APIs im Quellcode der eigenen Anwendung
• d.h. auch keine Activator Klasse
– Definition von Services nicht im Quellcode sondern:
• In XML Dateien oder mit Java Annotationen
• Service = Java Interface, Service Impl. = Java Bean
– Service Referenzen werden durch SCM verwaltet
• Einschließlich der Reaktionsmöglichkeiten auf Service Dynamik
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 10
Service Component Models - Übersicht
• Declarative Services Specification
• Blueprint Container Specification
(Spring DM)
• Apache iPOJO (inject POJO)
• Google Guice & Peaberry
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 11
Declarative Services (DS)
• Seit Version 4.1 Teil der OSGi Compendium Spec. • XML Definition für Services & Service Referenzen • Definiert durch Service-Component Manifest Eintrag
– Default Ordner im Bundle: OSGI-INF/*.xml• Bestandteile:
Service Componet Runtime
OSGi Framework Instanz
Service Referencen
Bundle
Service Definitionen
Bundle
Service Vertrag
Bundle
…consume
provide
Implementiert als OSGi Bundle
Bundels werden um Service XML Definition erweitert
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 12
Blueprint Container (Spring DM)
• Seit Version 4.2 Teil der OSGi Compendium Spec. • Entstanden aus Spring Dynamic Modules (V. 2.0)• Definiert durch Bundle-Blueprint Manifest Eintrag
– Default Ordner im Bundle: OSGI-INF/blueprint/
Blueprint Container
Blueprint Bundlecomponent instances …
BlueprintXML
service reference
service
Blueprint Container Listener
Blueprint ExtenderBlueprint Container Impl
Blueprint Bundle…
Implementiert in 3 OSGi Bundles, weitere Bundles für Spring erforderlich!
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 13
Apache iPOJO (inject POJO)
• Vorreiter in Sachen OSGi SCM • Beeinflusste Declarative Services & Blueprint Container
• Ähnlich Blueprint (Spring DM):• Trennung von Service Impl. & SCM Aspekten
• Apache Projekt, nicht im OSGi StandardSchnellere Entwicklungs- und Release-Zyklen
• Unterschiede:• Konfiguration auch über ConfigureAdmin Service
• Verbindung zwischen Metadaten und POJO zur Build-Zeit
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 14
Google Guice & Peaberry
• Google Guice als Dependency Injection Framework• Guice Basierend auf Java Annotationen• Peaberry ist eine Erweiterung für Guice• Ermöglicht mit speziellen Annotation :
– Das erstellen von OSGi Service Objekten
– Das referenzieren von OSGi Services
– Das interagieren mit dem Service/ Bundle Lebenszyklus, d.h. umgang mit OSGi Service Dynamic
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 15
Service Component Models Review
Anzahl Bundles
Einsatz-bereich
Release-zyklus
Version
Declarative Services
1 Eclipse Plattfom Integration
OSGi Spez.
1.1
Blueprint Container
3 (13) Enterprise OSGi Spez.
1.0 (2.0)
Apache iPOJO
1 Performance kurz 1.6.8
Google Guice & Peaberry
1 (2) Java Annotation Verfechter
? 1.1.1
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 16
Inhalt
OSGi Einführung
Service Component Models
OSGi für Verteilte Systeme
Zusammenfassung
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 17
OSGi für Verteilte Systeme: Anforderungen
Aus der SOA im kleinen wird eine „echte“ SOA– Betreiben von OSGi Bundles ohne Anpassung
– Veröffentlichen & Nutzen von Service
Verteiltes OSGi Famework
VerteiltesSystem
Peers
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 18
Arten der Verteilung (1): Bundle Verteilung
• Bundles zur Serviceumsetzung werden Verteilt• Keine Netzwerk Kommunikation bei Service Aufruf
Service Bundle
Service BundleKopie
Netz-werk
Bundle
Verteiltes OSGi System
Peer 1 Peer 2
Bundle Daten Austausch
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 19
Verteiltes OSGi System
Arten der Verteilung (2): Automatische Proxy Generierung
• Bei 1. Service Aufruf wird ein Proxy Bundle erzeugt• Netzwerk Kommunikation bei Service Aufruf
Peer 1
Service Bundle
ProxyService Bundle
Netz-werk
Nachrichtenaustausch
Peer 2
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 20
R-OSGi, Architektur
Distributed R-OSGi:- Durch Verwendung von jSLP (Service Location Protocol)
• binäres Java Bytecode basiertes Kommunikationsprotokoll- Automatic Proxy Bundle Generation- Distributed Service Registry
R-OSGi R-OSGi R-OSGi
Peer 1 Peer 2 Peer n…
Verteiltes OSGi System
R-OSGiBundle
Lokales OSGiFramework
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 21
Remote Services & Distributed OSGi, Architektur
Lokale OSGi Frameworks
Distributed OSGi
ServiceConsumer Impl.
ServiceProducerImpl.
Distribution Provider Impl.
to endpoint endpoint
import service
exportservice
service.exported.interface
service.imported
Quelle: OSGi 4.2 Compemdium Spezifikation, Seite 5-850, Abbildung 13.1, Überarbeitet
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 22
Remote Services - Distribution Provider
• Kern von Remote Services• Abstrakte Impl. Unabhängige
Spezifikation• Referenz Impl. : Apache CXF• Basiert auf WS Standards:
– SOAP & WSDL, JAX-WS &-RS, Spring Integration, …
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 23
OSGi als Middleware Plattform
• Lokales OSGi Framework
– Standardisiertes Komponenten Laufzeitsystem
– Service Plattform, einschließlich Standard Services (http, logging, …)
• Distributed OSGi (R-OSGi, Remote Services, …)
– Schafft Ortstransparenz
– Verteilte Service Registry
– Verteilt lokale Komponenten
Eignung Verteilter OSGi Systeme als Middleware Plattform
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 24
Inhalt
OSGi Einführung
Service Component Models
OSGi für Verteilte Systeme
Zusammenfassung
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 25
Evaluation: Service Component Models & Remoting Konzepte
R-OSGi Remote Services(Apache CXF)
Declarative Services + +
Blueprint Container + +
Apache iPOJO + +
Google Guice & Peaberry
+ -
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 26
Zusammenfassung
• OSGi unterstützt Serviceorientierung• OSGi Entwicklung „ohne“ OSGi durch
Service Component Models– Declarative Services, Blueprint, iPOJO, Peaberry
• OSGi als Middleware Plattform für Verteilte Systeme– R-OSGi: einfach & performant Embedded
– Remote Services: komplex, Anbindung an Enterprise Welt, SOA
Multimedia- und Internetsysteme | Service components and distribution with OSGiSeite 27
Ende
• Vielen Dank für die Aufmerksamkeit – Fragen ?