Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2...

24
Entwicklung verteilter Anwendungen I WS 2013/14 Prof. Dr. Herrad Schmidt Kapitel 1 Einführung in die Konzepte zur Entwicklung verteilter Anwendungen

Transcript of Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2...

Page 1: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I WS 2013/14Prof. Dr. Herrad Schmidt

Kapitel 1

Einführung in die Konzepte zur Entwicklung verteilter Anwendungen

Page 2: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 2

Ziel: Erwerb von Kenntnissen zur Implementierung verteilter Anwendungen mit Microsoft-Techniken.

Inhalt:Konzepte zur Entwicklung verteilter AnwendungenProgrammierung in C#WPFSockets/ThreadsDatenbankprogrammierung (remote)Webanwendungen

Technologische Basis: Microsoft .NET Framework

Programmierumgebung: Microsoft Visual Studio 2010

MSDN Library: Microsoft msdn

Page 3: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 3

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.

Page 4: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 4

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.

Page 5: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 5

Beispiele:

Mail-Programme

Skype, ICQ,…

File-Server

Groupware

Internetshops

Buchungssysteme

ERP-Systeme

Fertigungssteuerung

Sensor-Systeme zur Überwachung

Cluster-/Grid-Computersysteme für rechenintensive Aufgaben

Page 6: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 6

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

Page 7: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 7

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, …)

Page 8: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 8

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

Page 9: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 9

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.

Page 10: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 10

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 ApplikationsschichtRich Client: GUI- und Teile der ApplikationsschichtThin Client: Nur GUI-Schicht

Clients und Server kommunizieren über Remote Procedure Calls (Ein-Weg-Kommunikation, synchron, asynchron, callbacks)

Page 11: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 11

Auf der Basis der Schichten sind verschiedene Verteilungsformen möglich:

Physische Datenzugriffs-

schicht

Thin Client

Physische Datenzugriffs-

schicht

Physische Datenzugriffs-

schicht

Physische Datenzugriffs-

schicht

Physische Datenzugriffs-

schicht

Physische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Logische Datenzugriffs-

schicht

Applikation Applikation

Applikation Applikation Applikation Applikation

Steuerung

Steuerung Steuerung Steuerung Steuerung Steuerung

PräsentationPräsentation

Physische Datenzugriffs-

schicht

PräsentationPräsentationPräsentationPräsentation

ApplikationApplikation

Thin Client Rich Client Fat Client Fat Client Fat Client

Page 12: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 12

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…

Page 13: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 13

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

Page 14: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 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.

Page 15: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 15

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 Antwortauftragsorientiert: Request/Response-Mechanismus

Page 16: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 16

Interaktionsformen (Quelle: Bengel, G. (2004): Grundkurs Verteilte Systeme. 3. Aufl.)

Client

Client

Client

Client

Server

Server

Server

Server

SynchroneKommunikation

ZurückgestellteSynchrone Kommunikation

AsynchroneKommunikation

Ein-Weg-KommunikationOne-Way

Request

Warte auf Reply Reply

Request

Arbeite weiterÜberprüfe periodisch dasVorliegen des Reply Reply

Request

Registriere Callback Rufe registrierteArbeite weiter Funktion oder

Event auf

Request

Arbeite weiterRückantwort wird nicht benötigt

Page 17: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 17

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.

Page 18: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 18

Implementierung verteilter Kommunikation (1):

Socket-SchnittstelleSocket: Kommunikationsendpunkt (IP-Adresse, Port)Datenübergabe als Byte-Strom mittels TCP/IPspäter mehr…

Remote Procedure Call Übergabe des Kontrollflusses von einem Prozess auf einen anderen mit Datenübergabe mittels Aufruf- und ErgebnisparameternDie 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-RPCDie zu übertragenden Daten werden in XML dargestellt.

Page 19: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 19

Ablauf und Architektur eines RPC-Systems (Quelle: Schill, A./Springer, T. (2012): Verteilte Systeme. Grundlagen und Basistechnologien. )

NetzClient-Rechner Server-Rechner

Client Client- Laufzeit- Laufzeit- Server- Server Stub system system Stub

lokaler Marshalling sende Aufruf empf. Unmar- Aufruf Aufruf shalling

Aus- warten führung

lokales Unmar- empf. Sende Marshalling Ergebnis Ergebnis shalling Ergebnis

Import ..… Export

Page 20: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 20

Implementierung verteilter Kommunikation (2):

Remote Method Invocation (RMI) Konzept zur Kommunikation zwischen Objekten mittels entfernter Aufrufe von Methodeneine 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 Servicessind zur Realisierung von SOA geeignetsetzen 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)

Page 21: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 21

Implementierung verteilter Kommunikation (3):

Message Oriented Middleware (MOM)Kommunikationsplattform für vor allem asynchrone KommunikationNachrichten werden in eine Message Queue eingefügt und vom Client zeitversetzt abgearbeitetBeispiele: 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)

Page 22: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 22

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.

Page 23: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 23

Middleware (2):

Beispiele:

Objektorientierte Middleware: CORBA (Spezifikation), verschiedene ImplementierungenJava Remote Method Invocation (RMI), in JAVA integriert, entwickelt von SUN

Message Oriented Middleware:IBM WebSphere MQJava Message Service (JMS), Spezifikation, Teil der von SUN entwickelten Java Platform, Enterprise Edition (Java EE, früher J2EE)

Komponentenbasierte Middleware: EJB-basierte Application Server, SpezifikationMS .NET-Plattform

SOA-Middleware: SAP NetWeaver (SAP Dokumentation)

Page 24: Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Ziel: Erwerb von Kenntnissen zur Implementierung verteilter.

Entwicklung verteilter Anwendungen I, WS 13/14

Prof. Dr. Herrad SchmidtWS 13/14Kapitel 1Folie 24

Einordnung von Middleware und Verteilten Systemen (Quelle: Schill, A./Springer, T. (2012): Verteilte Systeme. Grundlagen und Basistechnologien. )

Anwendungsinteraktion Client Server (z.B. Kasse) (z.B. Kontenserver)

Middleware Objektinteraktion Middleware (z.B. Java RMI, Cobra, .NET, SOAP)

Transportorientierte Transportorientierte Schichten Schichten (z.B. TCP/IP)

Phys. Netzwerk Phys. Netzwerk (z.B. Fast Ethernet, ATM)