400 likes | 566 Views
Seminar "Component and Aspect Engineering" WS2003 CORBA Component Model Aleksej Palij, palij@informatik.uni-bonn.de. Inhalt. Motivation Übersicht des CORBA Komponentenmodels (CCM) Konzepte Abstraktes Model Container Model Implementationsmodel Entwicklung Packaging Model
E N D
Seminar "Component and Aspect Engineering" WS2003 CORBA Component ModelAleksej Palij, palij@informatik.uni-bonn.de
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
CORBA Component Model (CCM) • Ist: • ein verteiltes komponentenorientiertes Model • Technologie für den Einsatz von binärem ausführbarem Code, der in verschiedenen Sprachen implementiert wurde • Erster umfassender Komponenten-Standard • Ermöglicht: • Definition von Komponenten und ihrer Interaktionen • Generische Implementierung von • Komponentenverwaltung: Erzeugung, Aktivierung, Deaktivierung… • CORBA Services: Sicherheit, Persistenz, Verteilten Transaktionen, Ereignissen • Interoperabilität mit Enterprise Java Beans (EJB)
Motivation • plug-and-play von CORBA-Objekten • einfache Integration mit anderen objektorientierten Technologien, insbesondere Java und EJB • klare Kommunikationsschnittstellen zwischen CORBA-Objekten • externe Konfiguration der Anwendung (nicht in Objekten versteckt) • Befreiung der Objekten von Nicht-funktionslogik • Berücksichtigung von Installationszeiten
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
Abstraktes Komponentenmodel • Beschreibt: • Was eine Komponente den anderen Komponenten anbietet • Was eine Komponente von den anderen Komponenten braucht • Welche Arten der Zusammenarbeit werden zw. den Komponenten benutzt • Synchronous via operation invocation • Asynchronous via event notification • Welche Komponenteneigenschaften konfigurierbar sind • Welche Manager für die Komponenteninstanzenverwaltung verantwortlich sind (z.B. home)
Was ist eine CORBA-Komponente? • “component” ist ein neuer CORBA-meta-typ • Interface Definition Language (IDL) • Bietet Features von Komponenten an • Single inheritance • supports multiple interfaces • Jede Komponenteninstanz wird von einem eindeutigen Komponenten-home erzeugt und verwaltet
Component Features • Attributes = konfigurierbare Eigenschaften • Facets = Interfaces der angebotenen Operationen • Receptacles = Interfaces der benötigten Operationen • Event sources = erzeugte events • Event sinks = konsumierte events • Navigation und Introspektion auch „ports“ genannt
Eine CORBA-Komponente Component reference type CORBA Component OFFERED facets REQUIRED receptacles event sinks event sources attributes
Komposition CORBA Component CORBA Component CORBA Component CORBA Component CORBA Component CORBA Component CORBA Component CORBA Component
Attribute • zentraler Schlüssel für die erfolgreiche Wiederverwendbarkeit • sind für die Konfiguration von Komponenten gedacht • z.B., optionales Verhalten, Modalität, Ressourcenhinweise, usw. • die Auslösung von Exceptions möglich • Zugreifbar via “accessors” und “mutators” • Konfiguration • visuell via Property-Sheet-Mechanismus in Assembly oder Deployment Umgebung • Bei “homes” oder während der Implementationsinitialisierung • Danach möglicherweise nur lesbar
Facets • “Distinct named Interfaces” bieten die Funktionalität der komponentenbasierten Anwendung für die Klienten an • Jede “facet” enthält eine Sicht der Komponente, entspricht einer Rolle, bezüglich deren ein Klient die Komponente ansprechen kann • Eine “facet” representiert die Komponente selbst, nicht einen getrennten Teil davon • Facets besitzen unabhängige Objektreferenzen
Receptacles • “Distinct named connection points” für die Operationsaufrufe der anderen Komponenten • Enthalten eine oder mehrere Referenzen • Konfiguration • statisch während der Initialisierungs- oder Assembly-Phase • Wird dynamisch zur Laufzeit verwaltet um Interaktionen mit Klienten oder anderen Komponenten anzubieten (z.B. “callback”)
Events mit „push“-Mechanismus Notification channel • “named connection points” • Event sources • Publishers (“multicast”) • Emitters (“unicast”) • Event sinks • Akzeptieren events vom bestimmten Typ • Unterscheiden nicht zw. Verbindungen(emits) und Subscriptions(publishes) emits sink source publishes sink sink sink
Component Home • Verwaltet einen eindeutigen Typ von Komponenten • “home” ist ein neuer CORBA Meta-Typ • Wird instanziiert wenn die Komponente in Betrieb genommen wird • Ansprechbar via HomeFinder
Home CORBA Component Home Finder Container HomeFinder • HomeFinder ermöglicht die Ermittlung der Referenz zum gewünschten Home Interface eines Komponententyps • Alle Homes können hier registriert werden (nicht automatisch) • resolve_initial_reference(”ComponentHomeFinder”); • Liefert HomeFinder
PhilosopherHome Philosopher left right info CCM – IDL Beispiel component Philosopher { attribute string name; // The left fork receptacle. uses Fork left; // The right fork receptacle. uses Fork right; // The status info event source. publishes StatusInfo info; }; home PhilosopherHome manages Philosopher { factory new(in string name); }; Name= X
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
Container Model • Auch „Execution Model“ genannt • Beschreibt die Execution-Umgebung von Komponenteninstanzen • Basiert hauptsächlich auf Portable Object Adaptor • Automatische Aktivierung / Deaktivierung • Optimisierung des Resourcenverbrauchs • Bietet vereinfachte Interfaces für CORBA Services • Security, transactions, persistence und events • Benutzt callbacks für Instanzenmanagement
C l i e n t Callback API Container Container Architecture Home Extended OMG IDL external API CORBA Component Internal API POA ORB Transaction Security Persistency Notification
Was ist ein Component Container? • Server Runtime Environment • Versorgung und Verwaltung von Resourcen für Komponenten-Instanzen • Servant/component life time (memory consumption) • CORBA Object Services (COM) • kapselt ein oder mehrere POAs ein • Verwaltet ein Typ von Komponenten • entity, process, session, service, EJBsession, EJBentity, Empty
CORBA usage model Container Type ComponentCategory EJB type stateless Session Service - conversational Session Session Session durable Entity Process - durable Entity Entity Entity Komponententypen
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
Implementationsmodel • Component Implementation Framework – CIF • Beschreibt die Implementierungsstruktur und Persistenzzustand einer Komponente • Component Implementation Definition Language (CIDL) • Erleichtert die Imlementierung von Komponenten • Es muss “nur” Business Logic implementiert werden • kein port management, navigation, component life cycle etc. • Komposition (von Artefakten) ist das zentrale Konzept • Verwaltet Segmentierung und Persistenz • Generiert Skeletons
Component executor Component Skeleton Generierung composition <category> <composition_name>{ home executor <home_executor_name> { implements <home_type> ; manages <executor_name>; }; }; IDL 3 CIDL Functional Java / CIF Compiler Functional Non functional IDL 2 XML User written Generated
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
Main Elements of Software Package Descriptor: <softpkg> <pkgtype> <title> <author> <description> <licence> <idl> <propertyfile> <implementation> </softpkg> Packaging model • Pakete (ZIP) enthalten: • XML-Descriptor • Andere (Pakete, Libraries) • Softwarepaket • Komponentenpaket • Komponenten-Assembly-Paket
XML Descriptors Überblick • Software Package Descriptor (.csd) • CORBA Component Descriptor (.ccd) • Component Assembly Descriptor (.cad) • Component Property File Descriptor (.cpf)
Component Packaging IDL User Code Compiler Generated Code Shared Library or Executable IDL/CIDL Compiler Component Descriptor Component Package .zip Packaging Tool Default Properties
Component Assembly Instance Creation Port Connections Component Package Component Package Assembly Archive .aar (ZIP) Assembly Tool Component Package Properties DeploymentTool ...
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
Deployment model (1) • Zuordnung – Definierung von „execution sites“ • Eine Applikation kann mehrmals instanziiert werden • ComponentInstallation • AssemblyFactory • Assembly
Deployment model (2) • Server Activator • Component Server • Container • Instanziierung von Komponenten • Konfiguration von Komponenten
The Component Deployment Process «instantiates» AssemblyFactory Assembly ServerActivator «instantiates» Deployment Tool ComponentServer «instantiates» Container «instantiates» CCMHome «instantiates» ComponentInstallation CCMObject
Inhalt • Motivation • Übersicht des CORBA Komponentenmodels (CCM) • Konzepte • Abstraktes Model • Container Model • Implementationsmodel • Entwicklung • Packaging Model • Deployment Model • Alternativen im Überblick • Zusammenfassung
CCM vs. EJB, COM und .NET • Ähnlichkeiten mit EJB CORBA Komponenten • werden von homes erzeugt und verwaltet • laufen im Container • werden von Komponentenserver-Applikation gehostet • Ähnlichkeiten mit COM • Hat mehrere input und output Schnittstellen • Sowohl synchrone Operationen als auch asynchrone Nachrichten • Navigations- und Introspektionsfähigkeiten • Ähnlichkeiten mit .NET Framework • Können in verschiedenen Programmiersprachen geschrieben werden • Können zum Zweck der Verteilung verpackt werden
Aber mit CCM… • Die CCM Applikationen sind „wirklich“ verteilt • Sie können auf mehreren verteilten Knoten gleichzeitig eingesetzt und ausgeführt werden. • Eine CORBA Komponente kann von mehreren Klassen implementiert werden
Zusammenfassung • component (definiert via IDL) • Attribute, Ports, Navigation, Introspektion • home, HomeFinder • Container • Typen: Session, Entity • Komponententypen • entity, process, session, service, EJBsession, EJBentity, Empty • Implementierung (CIF,CIDL) • Verpackung (XML-Descriptors) • Verteilung