Corba. Systemprogrammierung WS 08 / 09. 21.01.09 Roginer - Fontana - Heinisch 1



Ähnliche Dokumente
Middleware. Einführung in CORBA. Middlewareplattform CORBA. CORBA: Eigenschaften

CORBA. Systemprogrammierung WS

Einführung in CORBA. Kay Römer Institut für Pervasive Computing ETH Zürich. ETH Zürich 1

CORBA-Konzept. Ziele. Common Object Request Broker Architecture CORBA. Plattformunabhängige Kommunikation Transparente Verteilung von Objekten

CORBA. Beispiel einer Middleware-Plattform. Christian Fass WS 2013/14 Software Engineering: Basistechnologien

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

Die Programmiersprache Java. Dr. Wolfgang Süß Thorsten Schlachter

CORBA. Eine kurze Einführung. Common Object Request Broker Architecture. Ying Lu

Mobile und Verteilte Datenbanken

Client/Server-Systeme

Client/Server-Programmierung

Client/Server-Programmierung

Kommunikation. Björn und Georg

Modul Software Komponenten 10 Komponentenarchitektur

3.2 Der CORBA-Standard Common Object Request Broker Architecture

Remote Method Invocation

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Programmieren in Java

Prinzipien Objektorientierter Programmierung

Grundlagen von Python

Verteilte Systeme. Verteilte Objektorientierte Systeme II. Prof. Dr. Oliver Haase

Web Services stellen eine Integrationsarchitektur dar, die die Kommunikation zwischen verschiedenen Anwendungen

Client/Server-Programmierung. CORBA: Schritt-für-Schritt Anleitung (Mini HOWTO)

Internetanwendungstechnik (Übung)

Hello World from CORBA

ObjectBridge Java Edition

Systemprogrammierung. Projekt: Java RMI. Wintersemester 2006 / 2007

Multiuser Client/Server Systeme

Vortrag von: Ilias Agorakis & Robert Roginer

OP-LOG

Parallele und Verteilte Systeme

Factory Method (Virtual Constructor)

Workflow, Business Process Management, 4.Teil

Übungen zu Softwaretechnik

Abschlusspräsentation Projekt Loan Broker mit BizTalk 2010

Einführung in Javadoc

Java RMI Remote Method Invocation

Objektorientierte Programmierung

Applet Firewall und Freigabe der Objekte

Einführung in die Programmierung

C# im Vergleich zu Java

Übung: Verwendung von Java-Threads

Wiederholung: Beginn

Vorlesung Objektorientierte Softwareentwicklung. Kapitel 0. Java-Überblick

Typumwandlungen bei Referenztypen

Der lokale und verteilte Fall

Innere Klassen in Java

Prof. Dr. Uwe Schmidt. 21. August Aufgaben zur Klausur Objektorientierte Programmierung im SS 2007 (IA 252)

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Objektorientierte Programmierung. Kapitel 12: Interfaces

Inhaltsverzeichnis. Zusammenfassung CORBA

4D Server v12 64-bit Version BETA VERSION

Grundlagen. Kapitel 1

-Testen verteilter Anwendungen

Java Einführung Collections

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

3 Objektorientierte Konzepte in Java

Desktop Management Interface und andere Initiativen der DMTF

Projektgruppe 453: Entwurf eines Managementwerkzeugs zur Verwaltung von Sicherheitsdiensten für komplexe eingebettete Dienstesysteme

Client-Server-Beziehungen

Objektbasierte Entwicklung

12.4 Sicherheitsarchitektur

Kap. 35 Swing: Grundlagen Kap Swing: Hauptfenster

NEWSLETTER // AUGUST 2015

Objektorientierte Programmierung

2. Installation unter Windows 8.1 mit Internetexplorer 11.0

Übung: Netzwerkmanagement mit SNMP

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Themen. Web Service - Clients. Kommunikation zw. Web Services

Java RMI, CORBA und Firewalls

System-Update Addendum

Anleitung zum Extranet-Portal des BBZ Solothurn-Grenchen

Java: Vererbung. Teil 3: super()

Tutorial Windows XP SP2 verteilen

Einstieg in die Informatik mit Java

Einführung in die objektorientierte Programmierung mit Java. Klausur am 19. Oktober 2005

Java und XML 2. Java und XML

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Lizenzierung von System Center 2012

Software Engineering Klassendiagramme Assoziationen

Enterprise Applikation Integration und Service-orientierte Architekturen. 09 Simple Object Access Protocol (SOAP)

Software Engineering. Zur Architektur der Applikation Data Repository. Franz-Josef Elmer, Universität Basel, HS 2015

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Revit Modelle in der Cloud: Autodesk 360 Mobile

3. Stored Procedures und PL/SQL

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Technische Dokumentation SilentStatistikTool

WebService in Java SE und EE

Java Enterprise Architekturen Willkommen in der Realität

Applets I. Grundlagen der g Applet-Programmierung

Große Übung Praktische Informatik 1

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Transkript:

Corba Systemprogrammierung WS 08 / 09 21.01.09 Roginer - Fontana - Heinisch 1

Gliederung Definition Historie RPC Eigenschaften Architektur IDL-Beispiel Anwendungen OMA Services Facilities Client-Server Vor und Nachteile Corba vs. RMI Fazit Quellen 21.01.09 Roginer - Fontana - Heinisch 2

Corba Common Object Request Broker Architecture Objekt Orientierte Middleware Ziel: Ort-, Plattform- und Implementations-unabhängige Kommunikation zwischen Applikationen. 21.01.09 Roginer - Fontana - Heinisch 3

Historie CORBA 1.0 (Oktober 1991) CORBA Object Model IDL (Interface Definition Language) API's für Dynamic Request Management and Invocation (DII) and Interface Repository C mapping 21.01.09 Roginer - Fontana - Heinisch 4

Historie CORBA 2.0 (August 1996) Erste große Revision IDL C++ / Smalltalk CORBA 3.0 (Juli 2002) Umsetzungen in Java vereinfacht CORBA 3.0.2 (Dezember 2002) Aktuelle Version 21.01.09 Roginer - Fontana - Heinisch 5

Historie Gründer: OMG ( Object Management Group ) 1989 gegründetes Konsortium herstellerunabhängige systemübergreifende Objektorientierte Programmierung 11 Firmen zur Gründung( IBM, Apple, ) 2008 beitritt von Microsoft über 800 Mitglieder 21.01.09 Roginer - Fontana - Heinisch 6

RPC (Remote Procedure Call) Technik zur Realisierung von Interprozesskommunikation Grundgedanke 1976 von James E. White Client Server Modell CORBA: Plattform unabhängiges RPC System 21.01.09 Roginer - Fontana - Heinisch 7

CORBA - Eigenschaften Objekte als Berechnungseinheiten: Methoden von Objekten können (entfernt) aufgerufen werden Ortstransparenz: Für den Aufrufer ist es egal, wo sich ein Objekt befindet Programmiersprachenunabhängigkeit: Komponenten einer verteilten Anwendung können in verschiedenen Programmiersprachen entwickelt werden 21.01.09 Roginer - Fontana - Heinisch 8

CORBA - Eigenschaften Hardware-, Betriebssystemunabhängigkeit: CORBA kann prinzipiell auf jeder Hardware und unter jedem Betriebssystem verwendet werden Herstellerunabhängigkeit: Verschiedene CORBA-Implementationen sind kompatibel, wenn sie sich an die Spezifikation halten 21.01.09 Roginer - Fontana - Heinisch 9

Corba Architektur ORB ( Object Request Broker ) Kern von Corba Vermittler, der die Kommunikation von Objekten sowohl betriebssystem- als auch programmiersprachenunabhängig innerhalb eines verteilten Systems, wie z. B. des Internets ermöglicht. 21.01.09 Roginer - Fontana - Heinisch 10

Corba Architektur ORB ( Object Request Broker ) 21.01.09 Roginer - Fontana - Heinisch 11

Corba Architektur IIOP ( Internet Inter ORB Protocol ) Corba Kommunikations-Protokoll, zum Aufruf von Methoden über Netzwerk. Legt fest wie GIOP-Nachrichten über TCP/IP-Netzwerke ausgetauscht werden Ermöglicht das Internet selbst als Backbone-ORB zu verwenden, durch das mehrere ORBs verbunden werden können 21.01.09 Roginer - Fontana - Heinisch 12

Corba Architektur IIOP ( Internet Inter ORB Protocol ) 21.01.09 Roginer - Fontana - Heinisch 13

Corba Architektur IDL ( Interface Definition Language ) Sprachsyntax zur Beschreibung von Schnittstellen einer Software-Komponente. Durch die IDL lassen sich Objekte und die auf sie anwendbaren Methoden beschreiben. Spezielle Compiler übersetzen direkt in andere Programmiersprachen(Language Binding) wie C/C++/Java... 21.01.09 Roginer - Fontana - Heinisch 14

IDL Beispiel: //IDL module BankSimple { // Definiere einen Typ für Geld typedef float Geld; // Prototyp für Interface Account. interface Account; interface Bank {... }; interface Account { // Account Besitzer und Guthaben. readonly attribute string name; readonly attribute Geld guthaben; // Verfügbare Funktionen des Accounts. void deposit (in Geld menge); void withdraw (in Geld menge); }; }; 21.01.09 Roginer - Fontana - Heinisch 15

Corba / Anwendungen Verteilte Anwendungen Anwendung deren Bestandteile, sich über mehrere Prozesse verteilen. Heterogene Anwendungen Unterscheidung Hardware, Software und Programmiersprachen. Objektorientierte Anwendungen Entwicklung hauptsächlich mit Objekten. 21.01.09 Roginer - Fontana - Heinisch 16

OMA (Object Management Architecture) Gesamtarchitektur, in der verschiedene Softwarekomponenten transparent in heterogenen Umgebungen miteinander kommunizieren können 21.01.09 Roginer - Fontana - Heinisch 17

Corba Services Naming Service ermöglicht serverobjekten mittels festgelegten namen angesprochen zu werden Trading Service auffinden von Objekten zur Laufzeit Event Service ermöglicht lose, gekoppelte oder ereignisbasierte n:n Kommunikation Life Cycle Service Operationen zum Kopieren (Migrieren), Verschieben und Löschen von Objekten zur Verfügung. 21.01.09 Roginer - Fontana - Heinisch 18

Corba Facilities CORBA Facilities bieten dem Entwickler standardisierte Lösungen für eine Aufgabe. Über CORBA hinaus definieren die Facilities einen Standard mit einer Schnittstelle zu jeder Programmiersprache. 21.01.09 Roginer - Fontana - Heinisch 19

Horizontale Facilities Horizontale Facilities sind Dienste mit einem breiten Anwendungsgebiet, die eine Basis für jede Applikation sind. Beispiele sind: Internationalization Service Print Facility Mobile Agents Facility 21.01.09 Roginer - Fontana - Heinisch 20

Vertikale (Domain) Facilities Speziellere Dienste werden nun von den vertikalen Facilities angeboten. Die Entwicklung erfolgt durch die Domain Task Forces Drei Beispiele für Domain Facilities sind: Air Traffic Control Macromolecular Structure Person Identification Service 21.01.09 Roginer - Fontana - Heinisch 21

Beispiel: Client-Server Modell Beispiel: IDL // Datei: hello.idl module H { }; interface Hello { }; void say_hello (in string msg); Eine IDL-Datei wird, im Fall von Java, mit dem Tool idltojava von Sun in Javacode übersetzt. Ein IDL-Modul wird in ein Java-Package überfürt. 21.01.09 Roginer - Fontana - Heinisch 22

Beispiel: Client-Server Modell Beispiel: Servant(Diener)-Objekt-Implementierung (Java) // Datei: HelloImpl.java import H.*; import java.io.*; public class HelloImpl extends HelloPOA { }; public void say_hello (String msg) { } System.out.println (msg); Am Server werden das Servant-Objekt selbst, sowie eine Serverimplementierung benötigt. HelloImpl ist das Serviceobjekt, auf das Clients zugreifen um den say_hello Service zu nutzen. Die Einbettung des Serviceobjekts in das CORBA System erfolgt über die Superklasse HelloPOA. HelloPOA: abstrakte Klasse. Erzwingt, dass der Servant die IDL Schnittstelle implementiert. 21.01.09 Roginer - Fontana - Heinisch 23

Beispiel: Client-Server Modell Beispiel: Server (Java) - TEIL 1 // Datei: Server.java import H.*; import java.io.*; import java.util.*; import org.omg.corba.*; import org.omg.portableserver.servant; public class Server{ public static void main (String args[]) throws Exception{ // ORB Initialisierung ORB orb = ORB.init (args, null); org.omg.portableserver.servant: Basisklasse für alle Serviceobjekte. Der ORB wird mit der Methode init() initialisiert. 21.01.09 Roginer - Fontana - Heinisch 24

Beispiel: Client-Server Modell Beispiel: Server (Java) - TEIL 2 //POA(Portable Object Adapter) //verbindet die Klasse (Servant) und den ORB // POA Initialisierung und Aktivierung POA poa = POAHelper.narrow( orb.resolve_initial_references resolve_initial_references("rootpoa")); poa.the_poamanager().activate activate(); // Objekt erzeugen, beim POA anmelden // und Objektreferenz erzeugen HelloImpl h = new HelloImpl(); Hello ref = HelloHelper.narrow ( poa.servant_to_reference (h)); Mit Hilfe der POA Stubklasse POAHelper wird das allgemeine CORBA- Objekt auf ein konkretes Objekt vom Typ POA gecastet. Narrow prüft gleichzeitig die Korrektheit des Castings. Die Methode resolve_initial_reference() bietet einen Mechanismus um Zugriff auf wichtige Dienste zu erhalten Der Manager verwaltet den POA, insbesondere den Fluss an Aufrufen. Nur wenn der Manager im Zustand aktiv ist, kann der POA Requests empfangen. Erzeugen und Aktivieren des Serviceobjekts: 21.01.09 Roginer - Fontana - Heinisch 25

Beispiel: Client-Server Modell Beispiel: Server (Java) - TEIL 3 // Objektreferenz in Datei schreiben BufferedWriter out = new BufferedWriter (new FileWriter ("hello.ref")); out.write (orb.object_to_string object_to_string (ref)); out.newline(); out.close(); // Event-loop des ORB orb.run run(); Generieren und Veröffentlichen der Objektreferenz: Die Veröffentlichung erfolgt hier in einem File mit Namen hello.ref Aktivieren des ORBs: Der ORB beginnt an seinem IP Port auf Requests zu horchen. // Objekt wieder abmelden poa.deactivate_object (poa.reference_to_id (ref)); } } 21.01.09 Roginer - Fontana - Heinisch 26

Beispiel: Client-Server Modell Beispiel: Client (C++) // Datei: Client.cc #include "hello.h" #include <iostream> #include <fstream> using namespace std; int main (int argc, char *argv[]) { } CORBA::ORB_var orb = CORBA::ORB_init ORB_init (argc, argv); ifstream istr ("hello.ref"); char ref[1000]; istr >> ref; CORBA::Object_var o = orb->string_to_object (ref); H::Hello_var h = H::Hello::_narrow (o); h->say_hello ("hello world!"); return 0; Initialisiere den ORB. Hole Objektreferenz Aus der stringifizierten Objektreferenz wird ein allgemeines CORBA- Objekt erstellt. narrow prüft ob die IDL Hierarchie korrekt ist. Zugriff auf die Service Methode say_hello() über die Objektreferenz. 21.01.09 Roginer - Fontana - Heinisch 27

Beispiel: Client-Server Modell Beispiel: Übersetzen Java-Code übersetzen: idlj -fall hello.idl javac Server.java C++-Code übersetzen: source /usr/pack/mico-2.3.12-mb/ix86-rhel4/lib/mico-setup.csh idl hello.idl mico-c++ -c hello.cc mico-c++ -c Client.cc mico-ld -o Client hello.o Client.o -lmico2.3.12 Ausführen: java Server./Client 21.01.09 Roginer - Fontana - Heinisch 28

CORBA: Vor- und Nachteile Vorteile: Sprach- und Plattformunabhängig Ortstransparenz Bietet viele Standardfunktionen zur Kommunikation an, dank CORBA-Services Flexibel und Erweiterbar 21.01.09 Roginer - Fontana - Heinisch 29

CORBA: Vor- und Nachteile Nachteile: Schwierig zu erlernen und einzusetzen Zusatzaufwand IDL Keine verteilte Garbage Collection Selbst einfache CORBA-Anwendungen sind relativ aufwändig in der Umsetzung 21.01.09 Roginer - Fontana - Heinisch 30

CORBA vs. RMI RMI Portabel dank Java Sprachspezifisch Distributed Garbage Collection leichte Implementierbarkeit keine zusätzliche Beschreibungssprache dynamisches Laden der Klassen CORBA /OMA Plattformunabhängigkeit Sprachunabhängigkeit dank IDL keine Garbage Collection Großer Serviceumfang decken großen Teil der Bedürfnisse kommerzieller Anwendungen ab Client benötigt ORB 21.01.09 Roginer - Fontana - Heinisch 31

Fazit CORBA bietet sich für den Einsatz in jedem Projekt an, indem ein verteiltes System realisiert wird. Ortstransparenz, Sprach- und Plattformunabhägigkeit sind große Vorteile von CORBA. Bei kleineren Anwendungen ist CORBA nachteilig, da es sehr aufwendig in der Umsetzung ist. 21.01.09 Roginer - Fontana - Heinisch 32

Quellen IDL Beispiel: http://www.iona.com/support/docs/orbix/gen3/33/html/orbix33cxx_pguide/ http://www.vs.inf.ethz.ch/edu/ws0607/vs/u2/corba.pdf http://de.wikipedia.org/wiki/common_object_request_broker_architectur http://www.omg.org/ 21.01.09 Roginer - Fontana - Heinisch 33