270 likes | 382 Views
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. Inhalt. OSGi Einführung Service Component Models
E N D
Service components and distribution with OSGiSeminar: 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
Inhalt • OSGi Einführung • Service Component Models • OSGi für Verteilte Systeme • Zusammenfassung
OSGi Architektur Quelle: OSGi 4.2 Core Spezifikation, Seite 1-332, Abbildung 1
OSGiBundle Lebenszyklus Quelle: OSGi 4.2 Core Spezifikation, Seite 97-332, Abbildung 4.28
OSGiServicelayer , SOA Pattern : Publish-Find-Bind Service Registry Publish Find Service Requestor Service Provider Bind
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
Inhalt • OSGi Einführung • Service Component Models • OSGi für Verteilte Systeme • Zusammenfassung
Service Orientierte Entwicklung mit OSGi • Probleme: • Kopplung an das OSGi Framework Wiederverwendbarkeit • Komplexe Implementierung eines nicht Anwendungsspezifischen Aspektes • Einfachheit , Fehleranfälligkeit, …
Lösung : Service Component Models (SCM) • Service Component Model: • Service Vertrag zwischen OSGiBundles • 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
Service Component Models - Übersicht • Declarative Services Specification • Blueprint Container Specification (Spring DM) • Apache iPOJO (inject POJO) • Google Guice & Peaberry
Declarative Services (DS) • Seit Version 4.1 Teil der OSGiCompendiumSpec. • XML Definition für Services & Service Referenzen • Definiert durch Service-Component Manifest Eintrag • Default Ordner im Bundle: OSGI-INF/*.xml • Bestandteile: Service ComponetRuntime Implementiert als OSGiBundle provide Service Vertrag Service Definitionen Service Referencen … consume Bundels werden um Service XML Definition erweitert OSGi Framework Instanz Bundle Bundle Bundle
Blueprint Container (Spring DM) • Seit Version 4.2 Teil der OSGiCompendiumSpec. • Entstanden aus Spring Dynamic Modules (V. 2.0) • Definiert durch Bundle-Blueprint Manifest Eintrag • Default Ordner im Bundle: OSGI-INF/blueprint/ Implementiert in 3 OSGiBundles, weitere Bundles für Spring erforderlich! Blueprint Container BlueprintBundle … BlueprintBundle service reference componentinstances … Blueprint XML service Blueprint Container Impl Blueprint Container Listener BlueprintExtender
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 Standard • Schnellere Entwicklungs- und Release-Zyklen • Unterschiede: • Konfiguration auch über ConfigureAdmin Service • Verbindung zwischen Metadaten und POJO zur Build-Zeit
Google Guice & Peaberry • Google Guice als DependencyInjection 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
Inhalt • OSGi Einführung • Service Component Models • OSGi für Verteilte Systeme • Zusammenfassung
OSGi für Verteilte Systeme: Anforderungen • Aus der SOA im kleinen wird eine „echte“ SOA • Betreiben von OSGiBundles ohne Anpassung • Veröffentlichen & Nutzen von Service VerteiltesOSGiFamework Verteiltes System Peers
Arten der Verteilung (1): Bundle Verteilung • Bundles zur Serviceumsetzung werden Verteilt • Keine Netzwerk Kommunikation bei Service Aufruf Verteiltes OSGi System BundleDaten Austausch Service Bundle • Kopie Service Bundle Netz-werk Bundle Peer 1 Peer 2
Arten der Verteilung (2): Automatische Proxy Generierung • Bei 1. Service Aufruf wird ein Proxy Bundle erzeugt • Netzwerk Kommunikation bei Service Aufruf Verteiltes OSGi System Nachrichtenaustausch Proxy Service Bundle Service Bundle Netz- werk Peer 1 Peer 2
R-OSGi, Architektur DistributedR-OSGi: • Durch Verwendung von jSLP(Service Location Protocol) • binäres Java Bytecode basiertes Kommunikationsprotokoll • Automatic Proxy BundleGeneration • Distributed Service Registry Verteiltes OSGi System R-OSGi Bundle R-OSGi R-OSGi R-OSGi Lokales OSGi Framework Peer 1 Peer 2 … Peer n
Remote Services & Distributed OSGi, Architektur Distributed OSGi Distribution ProviderImpl. service. imported service. exported.interface toendpoint endpoint Lokale OSGi Frameworks export service import service ServiceProducer Impl. ServiceConsumer Impl. Quelle: OSGi 4.2 Compemdium Spezifikation, Seite 5-850, Abbildung 13.1, Überarbeitet
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, …
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
Inhalt • OSGi Einführung • Service Component Models • OSGi für Verteilte Systeme • Zusammenfassung
Zusammenfassung • OSGiunterstützt Serviceorientierung • OSGiEntwicklung „ohne“ OSGi durch Service ComponentModels • 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
Ende • Vielen Dank für die Aufmerksamkeit • Fragen ?