3 - J (suc2)
3 - J (suc2)
3 - J (suc2)
Kartei Details
Karten | 54 |
---|---|
Sprache | Deutsch |
Kategorie | Scherzfragen |
Stufe | Grundschule |
Erstellt / Aktualisiert | 07.01.2014 / 15.01.2014 |
Weblink |
https://card2brain.ch/box/3_j_suc2
|
Einbinden |
<iframe src="https://card2brain.ch/box/3_j_suc2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Applikation
<Interprozesskommunikation>
Eine Applikation besteht aus einem oder mehreren Prozessen
Prozesse
<Interprozesskommunikation>
sind Objekte des Betriebssystems
ermöglichen einer Anwendung den sicheren Zugriff auf die Ressourcen des Betriebssystems
laufen in eigenem Speicherbereichen und sind dadurch voneinander isoliert
Für den Austausch von Daten zwischen Prozessen ist eine Interprozesskommunikation nötig
IPC (InterProcessCommunication)
<Interprozesskommunikation>
IPC basiert auf dem Austausch von Nachrichten und Daten zwischen Prozessen:
IPC kann unterschiedlich umgesetzt werden
über Dateien
über Pipes (nur lokal)
über Sockets (sowohl lokal als auch entfernt)
mit Hilfe einer Middleware
Kommunikationsmodel
<Interprozesskommunikation>
Kommunikationsmodel legt das Protokoll für den Ablauf der Kommunikation zwischen Prozessen (IPC) fest
synchroner Kommunikation und
asynchroner Kommunikation
Synchrone Kommunikation
<Interprozesskommunikation>
Vorteile
Eher einfacher zum Implementieren
Synchronisation beim Zugriff auf gemeinsame Ressourcen gleich erledigt
Nachteile
zum Teil ineffizient (das Warten)
braucht sichere und schnelle Netzwerkverbindung
Empfängerprozess muss verfügbar sein
enge Kopplung zwischen Sender und Empfänger
Asynchrone Kommunikation
Realisierung mittels Warteschlangen
<Interprozesskommunikation>
Vorteile
lose Kopplung von Prozessen geringere Fehlerabhängigkeit der Empfänger muss nicht empfangsbereit sein effizienter (kein Warten)
Nachteile
aufwendiger bzw. komplizierter in der Implementierung (Warteschlangen) komplizierte Protokolle nicht immer sinnvoll
verteiltes System läuft in der Regel in einer heterogenen Umgebung
<Interprozesskommunikation>
unterschiedliche Hardwarearchitekturen
unterschiedliche Betriebssysteme (Plattformen)
unterschiedliche Programmiersprachen
Damit die Komponenten des verteilten Systems miteinander kommunizieren können, müssen sie alle ein gemeinsames Format für Daten benutzen
Marshalling
<Interprozesskommunikation>
Unter marshalling versteht man die Transformation einer beliebigen Nachricht in eine übertragbare Nachricht, wobei
die Datenstruktur in eine zusammenhängende Nachricht "planiert" wird und
die zu sendenden Daten aus dem lokalen in das gemeinsame Format übersetzt werden
Daraus resultiert ein Strom von bytes, welcher übertragen werden kann: eine übertragbare Nachricht
Unmarshalling
<Interprozesskommunikation>
Auf der Seite des Empfängers müssen die empfangenen Daten aus dem gemeinsamen Format in das lokale Format des Empfängers übersetzt werden
Dieser Prozess wird unmarshalling genannt
Unmarshalling wird immer auf der Seite des Empfängers ausgeführt
IPC mit sockets
<Interprozesskommunikation>
Vorteile:
direkte Kontrolle aller Transportparameter grössere Flexibilität bei der Entwicklung neuer Protokolle bessere Performance
Nachteile
die Datenrepräsentation wenig komfortable Entwicklung von Anwendungen
IPC mit Netzwerkprogrammierung mit Middleware
<Interprozesskommunikation>
Middleware ist eine zusätzliche Schicht, die sich zwischen Transportschicht (TCP/UDP) und Anwendung befindet
Vorteile
Bequeme Entwicklung von Anwendungen Lösung des Datenrepräsentationsproblems Evtl. weitere Dienste „von Haus aus“ verfügbar
Nachteile
Ein (unter Umständen grosser) Overhead muss in Kauf genommen werden Schlechtere Performance im Vergleich zu Socket-Programmierung
Local Procedure Call (LPC)
<Interprozesskommunikation>
Aufruf einer Prozedur, welche sich im gleichen Speicherraum (Prozess) befindet
Keine Interprozesskommunikation mit LPC möglich
vorteile / nachteile LPC
<Interprozesskommunikation>
Vorteile:
Bessere Performance, da alle Prozeduren im gleichen Prozess bzw. Speicherraum
Zuverlässige Kommunikation
Einfachere Parameterübergabe, da lokaler Stack für alle Prozeduren gemeinsam und verfügbar
Einfacher Zugriff auf gemeinsame Daten, da alle Prozessdaten gemeinsam
Nachteile:
Keine Interprozesskommunikation möglich Folie
Remote Procedure Call (RPC)
<Interprozesskommunikation>
RPC steht für den "entfernten Aufruf von Prozeduren„
Mit "entfernt" ist eine Prozedur gemeint, welche
in einem anderen Prozess ausgeführt wird bzw.
sich in einem anderen Speicherraum befindet
Stellt eine Art der Interprozesskommunikation
Die kommunikationswillige Prozesse können
auf dem gleichen System oder
auf unterschiedlichen Systemen ausgeführt werden
LPC vs. RPC
<Interprozesskommunikation>
LPC ist einfacher zu implementieren, da sich die ganze Kommunikation (Nachrichtenaustausch) in einem gleichen Speicherraum (gleicher Prozess) abspielt
RPC ist weniger performant Kommunikation erfolgt in Form von Nachrichten, welche von einem zu anderem Prozess übertragen werden Parameter, welche übergeben werden müssen, müssen in die Nachricht passend verpackt werden
RPC ist komplexer in der Implementierung, da zusätzliche Protokolle für das Senden von Nachrichten benötigt
Anfrage- und Antwort-Nachricht
<Interprozesskommunikation>
Wie wird eine entfernte Prozedur aufgerufen (mit allem, was dazu gehört: Parameterliste, Rückgabewert)?
Wie werden Fehlersituationen (Exceptions) behandelt?
Die Struktur der Anfrage- bzw. Anwort-Nachricht muss "abgesprochen" werden und darf danach nicht ohne Rücksprache mit der "Gegenseite" geändert werden
Damit soll sichergestellt werden, dass die Kommunikation zwischen beteiligten Komponenten exakt und ohne Missverständnisse realisiert werden kann.
Die Rede ist von Request- und Reply-Protokoll
Request-Protokoll (Anfrage-Nachricht)
<Interprozesskommunikation>
definiert, wie die Anfrage-Nachricht aufgebaut werden muss
enthält alle für den Aufruf der entferenten Operation relevanten Informationen (den Namen der Methode und die Parmeterliste) in einer passenden Form
hängt im Aufbau (Struktur) von der Operation ab, die aufgerufen werden soll
Reply-Protokoll (Antwort-Nachricht):
<Interprozesskommunikation>
definiert, wie die Antwort-Nachricht aufgebaut werden soll
enthält alle für die Antwort relevanten Informationen in einer passenden Form:
den Rückgabewert, der von der aufgerufenen Operation retourniert wird
die Informationen über die Ausnahme, die evtl. geworfen werden könnte
ist im Aufbau vom Rückgabewert und Ausnahme, die geworfen werden könnte, abhängig
Anfrage- und Antwort-Nachricht
WICHTIG
<Interprozesskommunikation>
Pro Operation, die als entfernte Operation aufgerufen werden soll, muss je ein Request- und Reply-Protokoll definiert werden
Erst nach dem die Request- und Reply-Protokoll definiert sind, kann mit der Implementierung der Kommunikation gestartet werden
RPC, def
<Remote Procedure Call (RPC)>
eine Art der Interprozesskommunikation gemeint, mit der Aufruf von Operationen (Prozeduren) realisiert wird, die sich in einem anderen Prozess befinden
da die aufgerufene Prozeduren nicht im eigenen Prozess (Speicherraum) ausgeführt werden, reden wir von einem entfernten Prozeduraufruf
RPC über socket
<Remote Procedure Call (RPC)>
Verbindung herstellen (connect)
Daten lesen (read) und Daten schreiben (write)
Verbindung abbauen (diesconnect)
Man ist gezwungen, mit Streams zu arbeiten (I/O), was nicht unserer Vorstellung entspricht: für uns ist logischer, die benötigten Methoden direkt aufzurufen.
LPC statt RPC
sicht client (Wie kann eine entfernte Prozedur wie eine lokale Prozedur aufgerufen werden?)
<Remote Procedure Call (RPC)>
Stellen wir dem Client eine Komponente zur Verfügung, die im gleichen Prozess ausgeführt wird und als Server aussieht
Diese Komponente muss die gleiche Schnittstelle wie der Server implementieren
Die Rede ist von einem Stub (auch ClientStub, Proxy bzw. Stellvertreter genannt)
LPC statt RPC
sicht server (Wie kann ein entfernter Aufruf wie ein lokaler Aufruf entgegengenommen werden?)
<Remote Procedure Call (RPC)>
Stellen wir dem Server eine Komponente zur Verfügung, die im gleichen Prozess ausgeführt wird und als Client aussieht
Diese Komponente wird die Prozeduren des Servers als lokale Prozeduren aufrufen
Die Rede ist von einem ServerStub (auch Skeleton genannt)
Client
<Remote Procedure Call (RPC)>
Der ClientStub implementiert die Server-Schnittstelle: so kann der Client alle Methoden des Servers auf dem ClientStub aufrufen
Der ClientStub
nimmt den Aufruf der Server-Methode entgegen, verpackt sie passend (Marshalling) und sendet sie zum Server bzw. zum ServerStub (RPC)
nimmt die Antwort des Servers entgegen, entpackt sie (Unmarshalling) und liefert den Rückgabewert an den Client zurück
Server
<Remote Procedure Call (RPC)>
Der Server muss alle Prozeduren implementieren, die in der entsprechenden Schnittstelle definiert wurden
Der ServerStub
nimmt die Anfrage, die der ClientStub gesendet hat, entgegen und entpackt sie (Unmarshalling)
ruft die gewünschte Methode auf dem Server auf (LPC) und nimmt die Antwort des Servers entgegen
verpackt die Antwort passend (Marshalling) und sendet sie an den ClientStub zurück
Der ServerStub muss eine Referenz auf den Server haben, um seine Prozeduren aufrufen zu können
RPC und Parameterübergabe
<Remote Procedure Call (RPC)>
Übergabe von Werten (pass by value)
Der Wert wird in die Nachricht entsprechend kopiert
Auf der anderen Seite wird der Wert "rekonstruiert"
Übergabe von Referenzen (pass by reference)
Grundsätzlich nicht möglich
Ausnahme: falls gemeinsamer Speicher vorhanden (shared memory)
RPC und Fehlerbehandlung
<Remote Procedure Call (RPC)>
Bei einem entfernten Aufruf kann ein Fehler an mehreren Orten passieren:
Bei der Zustellung der Anfrage
Während der Ausführung auf dem Server
Während der Zustellung der Antwort
RPC und Fehlerbehandlung
<Remote Procedure Call (RPC)>
Idempotente Prozesse dürfen beliebig oft ausgeführt werden Beispiel: das Lesen aus einer Datei
Nicht idempotente Prozesse dürfen nur einmal ausgeführt werden Beispiel: die Überweisung eines bestimmten Geldbetrags von einem auf das andere Konto)
Weitere Probleme mit RPC
<Remote Procedure Call (RPC)>
Performance:
RPC ist langsamer als LPC Antwortzeiten hängen auch von der Belastung des Netzwerks stark, die sich ständig ändert
Sicherheit
Daten (Nachrichten) werden im Netz übertragen uns sind somit angreifbar Probleme mit Authentifizierung von Kommunikationspartner
Socketarten:
<Sokets>
Streamsockets (auch TCP-Sockets genannt)
Datagramsockets (auch UDP-Sockets genannt)
TCP-Sockets, Datenübertragung
<Sokets>
TCP-Sockets sind verbindungsorientiert (TCP)
Phasen der Datenübertragung:
Aufbau der Verbindung Übertragung von Daten Abbau der Verbindung
Daten, welche übertragen werden, werden
in einen Datenstrom geschrieben, und am Zielort
aus dem Datenstrom (in gleicher Reihenfolge) gelesen
TCP-Sockets in Java
<Sokets>
Die Server-Anwendung arbeitet mit der Klasse ServerSocket, welche alle für einen Server notwendigen Funktionalitäten enthält
Die Client-Anwendung arbeitet mit der Klasse Socket
UDP-Sockets (viel performanter als TCP)
<Sokets>
UDP-Sockets sind nicht verbindungsorientiert
Daten werden in Pakete geschrieben
Datenpakete könne maximal 8 KB gross sein (Header- und Nutzdaten zusammen)
Grössere Nachrichten müssen in der Anwendung segmentiert bzw. reassembliert werden
Die Ankunft von Datenpaketen wird nicht bestätigt
Es kann passieren, dass manche Datenpakete nicht ans Ziel kommen Folie
Gruppenkommunikation ()
<Sokets>
Multicast-Sockets
Direkte Netzwerkprogrammierung, Zusammenfassung
<Sokets>
Vorteile
sehr gute Performance
Protokolle können frei nach Bedarf implementiert werden, wodurch Anpassungen bzw. Optimierungen möglich sind
Nachteile
Sockets eignen sich für reine Datenübertragung
Sockets sind nur die Schnittstelle zur Transportschicht
Bieten keine Unterstützung für Kommunikationssteuerung und Datendarstellung
Protokolle müssen auf der Anwendungsebene implementiert werden um Kommunikationspartner zu finden und Austausch von Nachrichten zu steuern
Eigenschaften der Transportschicht sind zu berücksichtigen (TCP/ UDP)
Programmierung relativ aufwendig und fehleranfällig
Nachteile von Netzwerkprogrammierung
<middleware>
aufwendig und fehleranfällig
es müssen einige technische Aspekte berücksichtigt werden, die mit eigentlichem Anwendungsproblem nichts oder nur wenig zu tun haben
Dies kann zu einem erheblichen Aufwand bei der Entwicklung einer Anwendung führen
Middleware, def.
Unter Middleware ist die Software zu verstehen, die zwischen der verteilten Anwendung und der darunterliegenden Schicht steht umd "vermittelt"
die Interaktion zwischen Anwendungskomponenten zu erleichtern, und
die Komplexität der vernetzten Systemumgebung zu maskieren
vorteil Middleware
wird für den Anwendungsentwickler die Umsetzung der Kommunikation einfacher, wobei
alle Aspekte der Netzwerkprogrammierung so weit wie möglich (und sinnvoll) von der verteilten Anwendung verborgen werden
Der Anwendungsentwickler kann sich auf die Lösung des eigentlichen Anwendungsproblems konzentrieren