Konzepte von Betriebssystem-Komponenten Middleware:.NET Remoting



Ähnliche Dokumente
Gliederung Einleitung Die Interprozess Kommunikation Zusammenfassung Fragen. .NET Remoting. André Frimberger

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

OP-LOG

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

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Guide DynDNS und Portforwarding

Programmieren in Java

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Java RMI Remote Method Invocation

Powermanager Server- Client- Installation

4D Server v12 64-bit Version BETA VERSION

Java: Vererbung. Teil 3: super()

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

Comtarsia SignOn Familie

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

5.2 Neue Projekte erstellen

EasyWk DAS Schwimmwettkampfprogramm

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

8.1.6.NET Remoting. C# ( Csharp, Cis ) : Referenzsprache für.net,

Herzlich Willkommen bei der nfon GmbH

Grundlagen von Python

Erstellen einer in OWA (Outlook Web App)

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Installation der SAS Foundation Software auf Windows

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Java Kurs für Anfänger Einheit 5 Methoden

Objektorientierte Programmierung. Kapitel 12: Interfaces

Einrichten eines Postfachs mit Outlook Express / Outlook bis Version 2000

Skript Pilotphase für Arbeitsgelegenheiten

Das Handbuch zu KNetAttach. Orville Bennett Übersetzung: Thomas Bögel

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Objektorientierte Programmierung

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Verteilte Systeme: Übung 4

Der lokale und verteilte Fall

Möglichkeiten des Parallelbetriebs der VR-NetWorld Software Parallelbetrieb VR-NetWorld Software 4.4x und Version 5.0 ab der 2. Beta!

WLAN Konfiguration. Michael Bukreus Seite 1

Einführung in die Programmierung

Albert HAYR Linux, IT and Open Source Expert and Solution Architect. Open Source professionell einsetzen

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Leitfaden zur Nutzung von binder CryptShare

IRF2000 Application Note Lösung von IP-Adresskonflikten bei zwei identischen Netzwerken

Zählen von Objekten einer bestimmten Klasse

Vorkurs C++ Programmierung

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Step by Step Remotedesktopfreigabe unter Windows Server von Christian Bartl

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

Windows Server 2008 (R2): Anwendungsplattform

Handbuch. timecard Connector Version: REINER SCT Kartengeräte GmbH & Co. KG Goethestr Furtwangen

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

TeamSpeak3 Einrichten

Benutzeranleitung (nicht für versierte Benutzer) SSH Secure Shell

Formular»Fragenkatalog BIM-Server«

Artikel Schnittstelle über CSV

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

Konfiguration von Exchange 2000 zum versenden und empfangen von Mails & Lösung des SEND after POP Problems

1. Einschränkung für Mac-User ohne Office Dokumente hochladen, teilen und bearbeiten

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Anleitung zur Nutzung des SharePort Utility

ABB i-bus KNX. Software-Information. Melde- und Bedientableau. Typ: MT 701.2

Durch Doppelklick auf die Zeile der entsprechenden Schnittstelle gelangt man in die Detaileingabe der Schnittstelle.

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Web Interface für Anwender

Dieses HowTo darf nicht vervielfältigt oder veröffentlich werden ohne Einverständnis des Erstellers. Alle Angaben ohne Gewähr.

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Remote Method Invocation

Lizenzen auschecken. Was ist zu tun?

IAC-BOX Netzwerkintegration. IAC-BOX Netzwerkintegration IACBOX.COM. Version Deutsch

SharePoint Demonstration

Verwendung des Terminalservers der MUG

Das BOND Community System. Die ersten Schritte in BIBLIOTHECA2000

Anbindung des eibport an das Internet

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

Client-Server-Beziehungen

Man liest sich: POP3/IMAP

Anleitung über den Umgang mit Schildern

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Kurzanleitung zur Softwareverteilung von BitDefender Produkten...2

12. Dokumente Speichern und Drucken

Daniel Warneke Ein Vortrag im Rahmen des Proseminars Software Pioneers

Anwendungshinweis Nr. 12. Wie konfiguriere ich redundante Serververbindungen

MSXFORUM - Exchange Server 2003 > SMTP Konfiguration von Exchange 2003

Ein einfacher Server. .NET Remoting. Klassentypen

Software Engineering Klassendiagramme Assoziationen

Sie wollen Was heißt das? Grundvoraussetzung ist ein Bild oder mehrere Bilder vom Wechseldatenträger

Print2CAD 2017, 8th Generation. Netzwerkversionen

Lokale Installation von DotNetNuke 4 ohne IIS

ESB - Elektronischer Service Bericht

Internet Explorer Version 6

Beschreibung und Bedienungsanleitung. Inhaltsverzeichnis: Abbildungsverzeichnis: Werkzeug für verschlüsselte bpks. Dipl.-Ing.

Version 0.3. Installation von MinGW und Eclipse CDT

icloud nicht neu, aber doch irgendwie anders

Software Engineering Interaktionsdiagramme

AlwinPro Care Modul Schnittstelle TV-Steuerung

Reporting Services und SharePoint 2010 Teil 1

Live Update (Auto Update)

Transkript:

Konzepte von Betriebssystem-Komponenten Middleware:.NET Remoting André Frimberger 16.11.2004 1 Was ist.net Remoting?.NET Remoting ist ein Framework aus.net, welches die Interprozesskommunikation zwischen zwei Prozessen als abstraktes Objekt bereitstellt. Ein Framework stellt eine Sammlung von Klassen dar, die einen Problembereich abdecken und zugleich allgemeingültiger als normale Klassen gehalten sind. Es ist völlig egal, ob zwei Anwendungen über lokale- oder über Remoteverbindungen kommunizieren, da von.net Remoting die komplette Prozesskommunikation übernommen wird. Die Abstraktion geht sogar soweit, dass das verwendete Übertragungsprotokoll der Anwendung geändert werden kann, ohne die Applikation neu kompilieren zu müssen. 2.NET Remoting 2.1 Prozess vs. Anwendungsdomäne Jede Anwendung wird in.net in einem eigenen, abgeschlossenen Adressraum ausgeführt. Diesen Adressbereich bezeichnet man im.net Jargon als Anwendungsdomäne (Application Domain). Innerhalb so einer Domäne können zwar Prozesse von verschiedenen.net Programmen ausgeführt werden, der Zugriff auf Objekte fremder Prozesse ist jedoch nur mit Hilfe des.net Remoting Frameworks möglich. 2.2 Das Prinzip der verteilten Anwendung in.net 1

Das remoting Framework kapselt den entfernten Objektaufruf so, dass der Client nicht mitbekommt, ob die Anwendung lokal oder remote ausgeführt wird. Um dies zu erreichen wird zwischen Remotingsystem (siehe Abb.) und Clientobjekt ein virtueller Proxy geschaltet, der die Transparenz gegenüber dem Programmierer sichert. Die Remotingsysteme selbst kommunizieren über einen Datenkanal (Data Channel), der weitestgehend protokollunabhängig ist. Es werden hauptsächlich zwei Datenübertragungsmethoden zur Inter-Process-Communication angeboten: binäre Datenübertragung per TCP SOAP über HTTP Die binäre Übermittlung ist um Faktor 4 [1] schneller als SOAP, da bei diesem XML basiertem Datenaustauschprotokoll der Datenoverhead sehr viel größer ist, wie man am folgenden Beispiel gut sehen kann: <SOAP ENV: Envelope xmlns :SOAP ENV= http : / / schemas. xmlsoap. org / soap / envelope / SOAP ENV: e n c o d i n g S t y l e= http : / / schemas. xmlsoap. org / soap / encoding/ > <SOAP ENV: Body> <m: GetLastTradePrice xmlns :m= Some URI > <symbol>myparameter<symbol> </m: GetLastTradePrice> </SOAP ENV: Body> </SOAP ENV: Envelope> Für die Übermittlung eines elf Byte Paramters werden hier ca. 00 Byte übermittelt. SOAP bietet allerdings den Vorteil, auch in Netzwerken arbeiten zu können, die durch einen Proxy getrennt sind, der nur HTTP nach Außen durchlässt. 2. Parameterübergabe 2..1 Marshaling by Reference Bei Marshaling by Reference werden die Objekte per Referenz angesprochen. Das Objekt wird auf dem Server instanziiert, der Client bekommt lediglich eine Refernz zurückgeliefert. Für die Übertragung ist die spezielle Klasse ObjRef zuständig. Da die Methoden auf dem Server ausgeführt werden, braucht der Client nur gegen eine Beschreibung der verwendeten Methoden (dies geht z.b. mit #soapsuds -ia:<classname>-gc) gelinkt zu werden. 2..2 Marshaling by Value Bei Marshaling by Value werden die zu übertragenden Werte kopiert, sodass die Änderungen die Senderseite nicht berühren. Bei diesem Verfahren muss die Klasse das Attribut serializable tragen, d.h. die Felder des Objektes können in einen Datenstrom gepackt werden und vom Sender zum Empfänger übertragen werden. Dort werden sie wieder deserialisiert. Kriterien für ein serialisierbares Objekt: Das Objekt muss serialisierbare Felder oder Referenzen auf MarshalByRef Objekte enthalten. Außerdem muss die komplett implementierte Klasse auf dem Client verfügbar sein, da das serialisierte Objekt auf dem Client ausgeführt wird. 2.4 Instanziierung von Server Objekten 2.4.1 Client Aktivierung Bei dieser Instanzierungsart wird ein new -Aufruf, bei der remote Objektinstanziierung auf dem Client, an den Server gesendet. Der Server instanziiert das Objekt und sendet eine Referenz auf dieses zurück. Der Client steuert also, welches Objekt (in welcher Version) erzeugt werden soll. 2

2.4.2 Server Aktivierung Im Gegensatz zur Client Aktivierung bestimmt hier der Server, welche Version eines Objekts verwendet wird. Desweiteren unterstützt.net zwei weitere Modi Server aktivierte Instanzen von Remote Objekten abzuarbeiten: SingleCall Singleton Der SingleCall Modus fertigt eine (und nur eine) ankommende Anfrage ab. Diese Methode wird oft in Anwendungen eingesetzt, bei denen die Objekte nur wenig Arbeit leisten müssen. Außerdem sind Single Calls Zustandslos ( stateless ), d.h. es können keine Zustandsinformationen zwischen Methodenaufrufen gespeichert werden. Das Gegenstück stellen die Singleton Objects dar, diese können Informationen zwischen verschiedenen Client Anfragen speichern. Darüber hinaus können Singletons mehrere Clients bedienen und sind deswegen in Anwendungsszenarien sinnvoll, bei denen Daten explizit zwischen Clients ausgetauscht werden müssen. 2.5 Assemblies Assemblies sind selbstbeschreibende Bibliotheken oder Programme, die eine Erweiterung von herkömmlichen.exe und.dll Dateien darstellen. Die genaue Definition ist unter [2] zu finden. Im.NET Remoting Kontext reicht es, sich ein Assembly als kompiliertes und gekapseltes Objekt vorzustellen, welches die komplette Implementierung oder nur einen Definitionsrumpf (ähnlich Interfaces) eines Serverobjektes darstellt. Zur Erzeugung Server-aktivierter Objekte reicht ein einfacher Definitionsrumpf der verwendeten Remoteobjekte aus. Marshal-By-Value Objekte hingegen müssen die komplette Implementierung auf dem Client vorliegen haben, was unter Umständen zu Problemen, wie Reengeneering oder Versionskonflikten führen kann. Abhilfe schafft ein sogenanntes Fabrik Entwurfsmuster (Factory Pattern), welches -je nach Kontextspezialisierte Klassen mit gemeinsamen Schnittstellen bereitstellt, ohne dass der Client diese spezielle Klasse kennen muss. Muster selbst stellen eine weitere Abstraktionsebene gegenüber Klassen dar und können so Expertenwissen abstrakt beschreiben. Nähre Informationen unter [5] 2.6 Lebensdauer von Objekten Die Lebensdauer eines Objektes wird bei der Aktivierung einer Instanz als Parameter mit angegeben. Wird innerhalb dieses Timeouts nicht auf das Objekt zugegriffen, so verfällt das erzeugte Objekt nach abgelaufener Zeit. Server aktivierte SingeCall Objekte stellen eine Ausnahme dar, da sie nur für den Zeitraum eines Methodenaufrufes existieren. Im Gegensatz zu anderen Mechanismen entsteht bei diesem Verfahren kein weiterer Netzwerkverkehr. Das Laufzeitverhalten kann über die beiden Parameter ILease.InitialLeaseTime (Defaultwert: 5 min) und ILease.RenewOnCallTime (Defaultwert: 2 min) verändert werden. Sollte ein Aufrufer das Objekt nach dem Timeout noch benötigen, so besteht die Möglichkeit einen Sponsor zu erzeugen, der über einen Ping Keep-alive-Mechanismus das Objekt am Leben erhält. 2.7 Versionierung Die Versionierung ist vom erzeugten Objekttyp abhängig. Die Serveraktivierten Objekte verwenden, falls keine Versionsnummer angegeben wurde, stets die neueste Version. Dabei spielt es keine Rolle, gegen welche Version der Client gelinkt wurde. Unterstützt dieser die Version des Servers nicht, wird am Client eine Ausnahme geworfen. Objekte, die auf dem Client aktiviert werden, kann die zu verwendende Version mitgegeben werden. Beide Kommunikationspartner verwenden dann die vom Client gewünschte Version. Bei fehlender Versionsangabe wird implizit die neueste ausgewählt.

2.8 Sicherheit Im Gegensatz zu RMI oder SunRPC fehlen bei.net Remoting Sicherheitsmechanismen. Es bleibt dem Programmierer folglich selbst überlassen, geeignete Zugriffsmechanismen zu implementieren. Auf Windows Systemen können jedoch die vom Betriebssystem bereitgestellt Authentifizierungsmechanismen genutzt werden. Beispiele Folgendes Beispiel implementiert einen Remotetaschenrechner, der zwei Zahlen miteinander multiplizieren kann. Zuerst wird die Mathe Library erstellt: Listing 1: MathLib.cs 2 public c l a s s MathLib : MarshalByRefObject { 4 public int multiply ( int number1, int number2 ) { 5 return number1 number2 ; 6 } 7 } Die Klasse kompiliert man mit >csc /noconfig /t:library MathLib.cs zu einem Assembly, um dieses -je nach Objektaktivierungsart- später an den Server und/oder Client zu binden. 2 using System. Runtime. Remoting ; 4 public class Server { 5 public static void Main ( ) { Listing 2: Server.cs 6 RemotingConfiguration. Configure ( Server. exe. c o n f i g ) ; 7 Console. Write ( Warte auf Anfragen... ) ; 8 Console. ReadLine ( ) ; 9 } 10 } Den Server kompiliert man mit: >csc /noconfig /r:mathlib.dll Server.cs Listing : Server.exe.config 1 <c o n f i g u r a t i o n > 2 <system. runtime. remoting> <a p p l i c a t i o n > 4 <s e r v i c e > 5 <wellknown mode= S i n g l e t o n 6 type= MathLib, MathLib 7 objecturi= MathLib. rem /> 8 </s e r v i c e > 9 <channels> 10 <channel ref= http port= 9999 /> 4

11 </channels> 12 </a p p l i c a t i o n > 1 </system. runtime. remoting> 14 </c o n f i g u r a t i o n > 2 using System. Runtime. Remoting ; 4 public class C l i e n t { 5 public static void Main ( ) { Listing 4: Client.cs 6 RemotingConfiguration. Configure ( C l i e n t. exe. c o n f i g ) ; 7 MathLib l i b = new MathLib ( ) ; 8 9 Console. WriteLine ( Welcome to MathLib C l i e n t : ) ; 10 Console. Write ( B i t t e Zahl 1 eingeben : ) ; 11 string zahl1 = Console. ReadLine ( ) ; 12 Console. Write ( B i t t e Zahl 2 eingeben : ) ; 1 string zahl2 = Console. ReadLine ( ) ; 14 Console. WriteLine ( l i b. multiply ( Convert. ToInt2 ( zahl1 ), Convert. ToInt2 15 } 16 } Den Client kompiliert man mit: >csc /noconfig /r:mathlib.dll Client.cs Listing 5: Client.exe.config 1 <c o n f i g u r a t i o n > 2 <system. runtime. remoting> <a p p l i c a t i o n > 4 <c l i e n t > 5 <wellknown type= MathLib, MathLib 6 url= http : / / l o c a l h o s t :9999/ MathLib. rem /> 7 </ c l i e n t > 8 </a p p l i c a t i o n > 9 </system. runtime. remoting> 10 </c o n f i g u r a t i o n > Wie man hier sehen kann, beinhaltet.net Remoting schon eine Funktion, Konfigurationsdateien zu verwenden, so dass der Programmierer keine weiteren Aufwand dafür betreiben muss. Literatur [1] http://www.sdm.de/download/publikationen/oop200 Net Haller.pdf [2] http://wwwcs.upb.de/cs/ag-schaefer/lehre/pg/shuttle/seminar/ ausarbeitungen/entwurfsmuster Ausarbeitung.pdf [] http://de.wikipedia.org/wiki/entwurfsmuster [4] http://msdn.microsoft.com/library/deu/cpguide/html/cpconnetremotingoverview.asp [5] http://www.devgroup-stuttgart.de 5