Entwicklung verteilter Anwendungen I, WS 13/14

Download Report

Transcript Entwicklung verteilter Anwendungen I, WS 13/14

Entwicklung verteilter Anwendungen I
WS 2013/14
Prof. Dr. Herrad Schmidt
Kapitel 1
Einführung in die Konzepte zur Entwicklung
verteilter Anwendungen
Entwicklung verteilter Anwendungen I, WS 13/14
Ziel:
Erwerb von Kenntnissen zur Implementierung verteilter Anwendungen
mit Microsoft-Techniken.
Inhalt:
Konzepte zur Entwicklung verteilter Anwendungen
Programmierung in C#
WPF
Sockets/Threads
Datenbankprogrammierung (remote)
Webanwendungen
Technologische Basis: Microsoft .NET Framework
Programmierumgebung: Microsoft Visual Studio 2010
MSDN Library: Microsoft msdn
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 2
Entwicklung verteilter Anwendungen I, WS 13/14
Literatur
Geirhos, M. (2011): Professionell entwickeln mit Visual C# 2010.
Das Praxisbuch. Galileo Press, Bonn.
Mandl, P. (2009): Masterkurs Verteilte betriebliche
Informationssysteme: Prinzipen, Architekturen und
Technologien. Vieweg+Teubner, Wiesbaden.
Schill, A./Springer, T. (2012): Verteilte Systeme. Grundlagen und
Basistechnologien. 2. Aufl., Springer, Berlin Heidelberg.
Tanenbaum, A.S./van Stehen, M. (2007): Distributed Systems
Principles and Paradigms. Pearson, Prentice Hall.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 3
Entwicklung verteilter Anwendungen I, WS 13/14
Definitionen:
Verteiltes System:
System aus eigenständigen, vernetzten Rechnern, die über
Nachrichten miteinander kommunizieren, um eine gemeinsame
Aufgabe zu erledigen.
Verteilte Anwendung:
Anwendungsprogramm, das auf einem verteilten System basiert
und dessen Komponenten im Netz verteilt sind. Die
Komponenten verfügen nicht über einen gemeinsamen Speicher.
Sie kommunizieren über Schnittstellen. Der Anwender
kommuniziert mit der verteilten Anwendung, ohne dass ihm die
Verteilung transparent wird.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 4
Entwicklung verteilter Anwendungen I, WS 13/14
Beispiele:
Mail-Programme
Skype, ICQ,…
File-Server
Groupware
Internetshops
Buchungssysteme
ERP-Systeme
Fertigungssteuerung
Sensor-Systeme zur Überwachung
Cluster-/Grid-Computersysteme für rechenintensive Aufgaben
…
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 5
Entwicklung verteilter Anwendungen I, WS 13/14
Zielsetzungen:
Kommunikationsverbund
Datenverbund
Lastverbund
Leistungsverbund (Aufteilung einer Aufgabe in Teilaufgaben)
Mitarbeiterübergreifende Unterstützung von Geschäftsprozessen
Gemeinsamer Ressourcenzugriff
Ausfallsicherheit
Flexibilität
Skalierbarkeit (leistungsmäßig, geographisch, administrativ)
Wirtschaftlichkeit
Nachteile:
Komplexität
Kommunikationsprobleme
Sicherheit
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 6
Entwicklung verteilter Anwendungen I, WS 13/14
Herausforderungen:
Namens- und Verzeichnisdienste zum Auffinden von
Kommunikationspartnern
Schnittstellen
Verteilte Transaktionen
Sicherheit
Überwindung der Fehleranfälligkeit
Überwindung der Heterogenität (Netzwerktechnologie,
Betriebssysteme, Programmiersprachen, Datenformate, …)
Transparenz (Ortstransparenz, Migrationstransparenz,
Skalierungstransparenz, Zugriffstransparenz, …)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 7
Entwicklung verteilter Anwendungen I, WS 13/14
Verteilte Architektur:
Die physische Architektur repräsentiert die verfügbaren
Rechnersysteme.
Zur Verteilung müssen logische Subsysteme (layer) gebildet
werden. Diese werden auf die physische Architektur verteilt und
damit zu tiers.
Typische Architekturen (Programmiermodelle) für verteilte
Anwendungen:
Client/Server-Architektur
Web-Architektur
Objektorientierte Architektur
Komponentenbasierte Architektur
Serviceorientierte Architektur
u.a., z.B.: Grid-Architektur, Peer-to-Peer-Architektur
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 8
Entwicklung verteilter Anwendungen I, WS 13/14
Client/Server-Architektur (1):
Die Anwendung wird auf einen oder mehrere Server und Clients
verteilt.
Clients und Server können auf einem oder verschiedenen
Rechnern ablaufen.
Die Anfrage (request) geht immer vom Client aus. Der Server
entscheidet über die Reaktion (Verfahren, Reihenfolge) und
schickt eine Rückantwort (reply).
Der Server verwaltet pro Client eine Verbindung.
Die Clients stehen in keinem Bezug zueinander.
Ein Server kann wiederum Anfragen an andere Server richten.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 9
Entwicklung verteilter Anwendungen I, WS 13/14
Client/Server-Architektur (2):
Die Client/Server-Umgebung ist i.d.R. bekannt und
kontrollierbar.
Auf den Clients ist ein Teil der Anwendung installiert.
Varianten:
Fat Client: GUI- und Applikationsschicht
Rich Client: GUI- und Teile der Applikationsschicht
Thin Client: Nur GUI-Schicht
Clients und Server kommunizieren über Remote Procedure Calls
(Ein-Weg-Kommunikation, synchron, asynchron, callbacks)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 10
Entwicklung verteilter Anwendungen I, WS 13/14
Auf der Basis der Schichten sind verschiedene Verteilungsformen möglich:
Präsentation
Präsentation
Präsentation
Präsentation
Präsentation
Präsentation
Steuerung
Steuerung
Steuerung
Steuerung
Steuerung
Applikation
Applikation
Applikation
Applikation
Logische
Datenzugriffsschicht
Logische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Steuerung
Applikation
Applikation
Applikation
Logische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Logische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Logische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Thin Client
Thin Client
Rich Client
Logische
Datenzugriffsschicht
Physische
Datenzugriffsschicht
Fat Client
Fat Client
Fat Prof.
Client
Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 11
Entwicklung verteilter Anwendungen I, WS 13/14
Web-Architektur:
Wie bei der Client/Server-Architektur werden layer bzw.
Subsystem auf Clients und Server verteilt, aber speziell unter
Einsatz von Web-Technologien.
Ein Webbrowser ist die Laufzeitumgebung des Web-Clients.
Die Anfragen werden von einem Web-Server entgegen
genommen.
Zur Kommunikation wird das HTTP-Protokoll eingesetzt.
Die Web-Clients sind aus Entwicklersicht nicht kontrollierbar.
später mehr…
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 12
Entwicklung verteilter Anwendungen I, WS 13/14
Objektorientierte Architektur:
Die Verteilung erfolgt wie bei der Client/Server-Architektur.
Die Einheiten der Kommunikation und Verteilung stellen Objekte
dar.
Die Kommunikation erfolgt über entfernte Methodenaufrufe.
Beispiel: CORBA
Komponentenbasierte Architektur:
Die Anwendung ergibt sich durch die Komposition von
Komponenten.
Eine Komponente besitzt eine eigenständige Funktionalität, die
i.d.R. wiederverwendbar ist.
Sie sind an ein und dieselbe Plattform gebunden.
Beispiele: Implementierung mit Enterprise JAvaBeans, Android
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 13
Entwicklung verteilter Anwendungen I, WS 13/14
Serviceorientierte Architektur (SOA):
Die Dienste sind technisch voneinander unabhängige
Komponenten, die lose gekoppelt sind.
Dienste gewährleisten eine Interoperabilität über Plattform- und
Unternehmensgrenzen.
Die Schnittstelle wird durch Web Service Definition Language
(WSDL) beschrieben.
Der Zugriff auf die Dienste erfolgt mit dem
Kommunikationsprotokoll SOAP.
Die klassische Web-Architektur kann als SOA aufgefasst werden.
Die Dienste können zu komplexen Unterstützungssystemen für
Geschäftsprozesse gekoppelt werden.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 14
Entwicklung verteilter Anwendungen I, WS 13/14
Konzepte verteilter Kommunikation (1):
Da die Subsysteme in verschiedenen Prozessen laufen, bedarf es einer
Interprozesskommunikation in Form des Nachrichtenaustauschs gemäß
Kommunikationsprotokollen.
synchrone/ansynchrone Kommunikation:
synchrone K.: Der Sender wartet blockierend auf die Antwort.
zurückgestellte synchrone K.: Der Sender arbeitet nach dem Absenden
der Anfrage weiter und prüft periodisch, ob ein Ergebnis vorliegt.
asynchrone K.: Der Sender arbeitet nach dem Absenden der Anfrage
weiter. Die Erfassung der Antwort muss geregelt werden.
meldungsorientierte/auftragsorientierte Kommunikation:
meldungsorientiert: Einwegnachricht ohne Antwort
auftragsorientiert: Request/Response-Mechanismus
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 15
Entwicklung verteilter Anwendungen I, WS 13/14
Request
Synchrone
Kommunikation
Client
Server
Warte auf Reply
Reply
Request
Zurückgestellte
Synchrone
Kommunikation
Client
Arbeite weiter
Überprüfe periodisch das
Vorliegen des Reply
Server
Reply
Request
Asynchrone
Kommunikation
Client
Server
Registriere Callback
Arbeite weiter
Rufe registrierte
Funktion oder
Event auf
Request
Ein-WegKommunikation
One-Way
Client
Server
Arbeite weiter
Rückantwort wird nicht benötigt
Interaktionsformen (Quelle: Bengel, G. (2004): Grundkurs Verteilte Systeme. 3. Aufl.)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 16
Entwicklung verteilter Anwendungen I, WS 13/14
Konzepte verteilter Kommunikation (2):
Zustandsverwaltung:
Zustandsbehaftete (stateful) Server: Der Server speichert
Informationen zu einer Session über den Request hinaus.
Zustandslose (stateless) Server: Der Server speichert keine
Informationen über einen Request.
Marshalling (Serialisierung)/Unmarshalling (Deserialisierung):
Umwandlung der Daten eines Datentyps in ein für die Übertragung
geeignetes Format bzw. Rückumwandlung in einen Datentyp
Publish-Subcribe-Kommunikation (Ereignismodell):
Abonnenten (Subscriber) registrieren sich beim Server (Publisher).
Ereignisabhängig veröffentlicht der Publisher Nachrichten und
verschickt sie an die eingetragenen Abonnenten.
Namensauflösung und Verzeichnisdienste (Naming/Directory-Services):
Mechanismus zum Auffinden von Servern (z.B. Domain Name Service
(DNS))
Nebenläufigkeit:
Mehrere Anfragen können parallel verarbeitet werden.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 17
Entwicklung verteilter Anwendungen I, WS 13/14
Implementierung verteilter Kommunikation (1):
Socket-Schnittstelle
Socket: Kommunikationsendpunkt (IP-Adresse, Port)
Datenübergabe als Byte-Strom mittels TCP/IP
später mehr…
Remote Procedure Call
Übergabe des Kontrollflusses von einem Prozess auf einen anderen
mit Datenübergabe mittels Aufruf- und Ergebnisparametern
Die Schnittstelle des Servers wird mittels der Interface Definition
Language (IDL) beschrieben. Der Compiler generiert daraus für beide
Seiten Codemodule, auf Client-Seite Stub, auf Server-Seite Skeleton
oder auch Stub genannt. Diese kapseln die Funktionalität der
Nachrichtenübermittlung.
Variante: XML-RPC
Die zu übertragenden Daten werden in XML dargestellt.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 18
Entwicklung verteilter Anwendungen I, WS 13/14
Client-Rechner
Client
ClientStub
lokaler
Aufruf
Marshalling
Netz
Laufzeitsystem
sende
Server-Rechner
Laufzeitsystem
Aufruf
empf.
ServerStub
Unmarshalling
Unmarshalling
Import
empf.
Aufruf
Ausführung
warten
lokales
Ergebnis
Server
Ergebnis
..…
Sende
Marshalling
Ergebnis
Export
Ablauf und Architektur eines RPC-Systems (Quelle: Schill, A./Springer, T. (2012): Verteilte
Systeme. Grundlagen und Basistechnologien. )
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 19
Entwicklung verteilter Anwendungen I, WS 13/14
Implementierung verteilter Kommunikation (2):
Remote Method Invocation (RMI)
Konzept zur Kommunikation zwischen Objekten mittels
entfernter Aufrufe von Methoden
eine Realisierung: Java-RMI
Common Object Request Broker Architecture (CORBA)
plattformübergreifende Spezifikation für das Erstellen verteilter
Anwendungen, für die es eine Reihe von Implementierungen gibt
Web Services
sind zur Realisierung von SOA geeignet
setzen sich zusammen aus
 dem Kommunikationsprotokoll SOAP (ermöglicht die
Kommunikation unter Nutzung von HTTP)
 der Beschreibungssprache Web Services Description Language
(WSDL)
 den Verzeichnisdienst Universal Description, Discovery and
Integration (UDDI)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 20
Entwicklung verteilter Anwendungen I, WS 13/14
Implementierung verteilter Kommunikation (3):
Message Oriented Middleware (MOM)
Kommunikationsplattform für vor allem asynchrone
Kommunikation
Nachrichten werden in eine Message Queue eingefügt und vom
Client zeitversetzt abgearbeitet
Beispiele: IBM Websphere MQ, Java EE Anwendungsserver
.NET-Technologien:
 Klassen für Sockets, Threads, …
 Distributed Component Object Model (DCOM), veraltet
 .NET Remoting als Ablösung für DCOM, wird aber nicht mehr
unterstützt
 ADO.NET
 ASP.NET
 Windows Communication Foundation (WCF)
 Windows Workflow Foundation (WF)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 21
Entwicklung verteilter Anwendungen I, WS 13/14
Middleware (1):
Spezielle Software zur Unterstützung der Kommunikation
Bindeglied zwischen Betriebssystem und Netzwerk sowie der
Anwendung
Aufgaben:
Kommunikation (z.B. RPC)
Sicherheit (Authentifizierung, Verschlüsselung,
Zugriffskontrolle,…)
Verzeichnisdienste
Repository Manager
Ablaufkontroll-Dienste (Thread-Manager,
Transaktionsverarbeitung, …)
Datenkonversion
etc.
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 22
Entwicklung verteilter Anwendungen I, WS 13/14
Middleware (2):
Beispiele:
Objektorientierte Middleware:
CORBA (Spezifikation), verschiedene Implementierungen
Java Remote Method Invocation (RMI), in JAVA integriert,
entwickelt von SUN
Message Oriented Middleware:
IBM WebSphere MQ
Java Message Service (JMS), Spezifikation, Teil der von SUN
entwickelten Java Platform, Enterprise Edition (Java EE, früher
J2EE)
Komponentenbasierte Middleware:
EJB-basierte Application Server, Spezifikation
MS .NET-Plattform
SOA-Middleware: SAP NetWeaver (SAP Dokumentation)
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 23
Entwicklung verteilter Anwendungen I, WS 13/14
Client
(z.B. Kasse)
Middleware
(z.B. Java RMI, Cobra,
.NET, SOAP)
Transportorientierte
Schichten
(z.B. TCP/IP)
Phys. Netzwerk
(z.B. Fast Ethernet, ATM)
Anwendungsinteraktion
Objektinteraktion
Server
(z.B. Kontenserver)
Middleware
Transportorientierte
Schichten
Phys. Netzwerk
Einordnung von Middleware und Verteilten Systemen (Quelle: Schill, A./Springer, T. (2012):
Verteilte Systeme. Grundlagen und Basistechnologien. )
Prof. Dr. Herrad Schmidt
WS 13/14
Kapitel 1
Folie 24