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



Ähnliche Dokumente
unterschiedlichen Sprachen

Netzprogrammierung: Microsoft.NET Remoting

7.4 Verteilungsabstraktion in heterogener Umgebung

8.4 Microsoft.NET. .NET Framework = 1 CLR Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung von managed cod

Java: Vererbung. Teil 3: super()

7.1.5 Java RMI Remote Method Invocation ( (

Der lokale und verteilte Fall

Vorkurs C++ Programmierung

Ein einfacher Server. .NET Remoting. Klassentypen

Einführung in die Java- Programmierung

MSXFORUM - Exchange Server 2003 > Konfiguration NNTP unter Exchange 2003

Typumwandlungen bei Referenztypen

Objektorientierte Programmierung. Kapitel 12: Interfaces

Innere Klassen in Java

Grundlagen von Python

Einführung in die Programmierung

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

Reporting Services und SharePoint 2010 Teil 1

Scala kann auch faul sein

Zählen von Objekten einer bestimmten Klasse

Visual Basic Express erstes Projekt anlegen

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

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Internet Explorer Version 6

Design Patterns 2. Model-View-Controller in der Praxis

Algorithmen und Datenstrukturen

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

Objektorientierte Programmierung

Updatehinweise für die Version forma 5.5.5

Einführung in die Informatik Tools

Step by Step Webserver unter Windows Server von Christian Bartl

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

ecaros-update 8.2 Update 8.2 procar informatik AG 1 Stand: DP 02/2014 Eschenweg Weiterstadt

8.1.5 Java RMI Remote Method Invocation

Prinzipien Objektorientierter Programmierung

Tips, Tricks und HOWTOs Virtualisierung für Profis und Einsteiger Serverkonsolidierung, Testumgebung, mobile Demo

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Allgemeine Anleitung Treiber für CP2102

Installation der SAS Foundation Software auf Windows

Netzwerkeinstellungen unter Mac OS X

EasyFonRouter. EasyData Software GmbH Bedienung Telefone. EasyFonRouter. TAPI-Anwendung. MS Outlook :18:48 Seite 1 von 8

Anleitung. Ein einfaches RMI-Beispiel. (ab Java 5.0) c Y. Pfeifer. (Juni 2014)

Guide DynDNS und Portforwarding

Version 0.3. Installation von MinGW und Eclipse CDT

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Java Virtual Machine (JVM) Bytecode

SEP 114. Design by Contract

In 12 Schritten zum mobilen PC mit Paragon Drive Copy 11 und Microsoft Windows Virtual PC

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6

Objektorientierte Programmierung

OP-LOG

C.1 Objekt-Serialisierung

Sie müssen sich für diesen Fall mit IHREM Rechner (also zeitgut jk o.ä.) verbinden, nicht mit dem Terminalserver.

Programmierkurs Java

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Wichtige Hinweise zu den neuen Orientierungshilfen der Architekten-/Objektplanerverträge

THEMA: "SAS STORED PROCESSES - SCHNELL GEZAUBERT" HELENE SCHMITZ

desk.modul : WaWi- Export

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

WhiteStarUML Tutorial

Übungen zu Softwaretechnik

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

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

11.1 Indirektes Binden (3) 11.1 Indirektes Binden (4) Objektadapterkonfiguration. Unmittelbarer Vorteil des indirekten Bindens

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Funktionserweiterungen, behobene Funktionseinschränkungen und Funktionseinschränkungen, EASY Starter V1.5

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

5. Abstrakte Klassen

WPF Steuerelemente Listbox, ComboBox, ListView,

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

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

PROBLEME BEIM INSTALLIEREN REALTEK HD AUDIO TREIBER

Studentische Lösung zum Übungsblatt Nr. 7

Erstellen sicherer ASP.NET- Anwendungen

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Computeranwendung und Programmierung (CuP)

Konfiguration von Outlook 2010

Workshop: Eigenes Image ohne VMware-Programme erstellen

CADEMIA: Einrichtung Ihres Computers unter Windows

Was meinen die Leute eigentlich mit: Grexit?

Handbuch ECDL 2003 Modul 2: Computermanagement und Dateiverwaltung Der Task-Manager

Alltagsnotizen eines Softwareentwicklers

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

START - SYSTEMSTEUERUNG - SYSTEM - REMOTE

Einführung in die Java- Programmierung

(Hinweis: Dieses ist eine Beispielanleitung anhand vom T-Sinus 154 Komfort, T-Sinus 154 DSL/DSL Basic (SE) ist identisch)

Software zur Anbindung Ihrer Maschinen über Wireless- (GPRS/EDGE) und Breitbandanbindungen (DSL, LAN)

Computer- und Medienservice Öffentliche Computerarbeitsplätze (ÖCAP) Willi Petrov

Factory Method (Virtual Constructor)

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Anleitung zur Installation und Verwendung von eclipseuml 2.1.0

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

(im Rahmen der Exchange-Server-Umstellung am )

Qt-Projekte mit Visual Studio 2005

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

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

Transkript:

8.1.6.NET Remoting.Net ( dotnet ) : von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von Programmen in unterschiedlichen Sprachen C# ( Csharp, Cis ) : Referenzsprache für.net, Microsoft s Antwort auf Java.NET Remoting : Fernaufrufe auf der.net-plattform http://msdn.microsoft.com/library/en-us/dndotnet/html/hawkremoting.asp http://msdn.microsoft.com/library/en-us/dndotnet/html/introremoting.asp http://www.ingorammer.com/remotingfaq http://www.inf.fu-berlin.de/~lohr/slides/dotnetrem.ppt 1

8.1.6.1 Grundzüge der Fernaufruf-Programmierung in C# Klasse eines fernaufrufbaren Objekts muss erben von System.MarshalByRefObject z.b. using System; using System.Runtime.Remoting; class Server : MarshalByRefObject { private string memory = ""; public string echo(string s) { return memory += s; } } 2

Objekterzeugung und bekanntmachung in 3 Varianten: Bekanntmachung eines öffentlichen Objekts: Objekt wird lokal erzeugt und dann veröffentlicht Fernerzeugung eines öffentlichen Objekts (SAO): Erzeugung wird lokal vorbereitet, aber erst dann durchgeführt, wenn der erste Klient Interesse zeigt Fernerzeugung eines privaten Objekts (CAO): Objekt wird auf anderem Rechner erzeugt, und der Erzeuger erhält einen Fernverweis darauf 3

Bekanntmachung eines öffentlichen Objekts mit Operation der Klasse System.Runtime.Remoting.RemotingServices : using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; using System.Runtime.Remoting.Channels.Tcp; TcpChannel channel = new TcpServerChannel(4711); ChannelServices.RegisterChannel(channel); Server server = new Server(); RemotingServices.Marshal(server, "Service"); bewirkt Registrierung bei eingebautem Namensdienst! 4

Nachdem dies auf dem Rechner obelix ausgeführt wurde, erhalten Klienten einen Fernverweis/Vertreterobjekt wie folgt: using System.Runtime.Remoting.Activation; Server s = (Server)Activator.GetObject( typeof(server), "tcp://obelix:4711/service"); Verweis auf Vertreter eines anonymen Typs, verträglich mit Server 5

Beachte: Keine explizite Stub-Erzeugung Stub Generator ist unsichtbar, erzeugt Stub Code bei Bedarf aus den Metadaten (Schnittstellenbeschreibungen u.a.) der beteiligten Klassen und Schnittstellen. Explizite Definition einer Schnittstelle (interface) für fernaufrufbare Objekte ist üblich, aber nicht obligatorisch. 6

Fernerzeugung eines öffentlichen Objekts (SAO): Erzeugung wird lokal vorbereitet, aber erst dann durchgeführt, wenn der erste Klient Interesse zeigt ChannelServices.RegisterChannel( new TcpServerChannel(4711)); RemotingConfiguration. RegisterWellKnownServiceType( typeof(server), Service", WellKnownObjectMode.Singleton); d.h. ein Objekt mit Zustand (im Gegensatz zu SingleCall) 7

Klient arbeitet wie bei : Server s = (Server)Activator.GetObject( typeof(server), "tcp://obelix:4711/service"); Achtung: Hier taucht weder beim Klienten noch beim Anbieter ein new auf. Das Objekt wird mit einem argumentlosen Konstruktor erzeugt. Es gibt also keine parametrisierte Initialisierung. 8

Fernerzeugung eines privaten Objekts (CAO): Server: Objekt wird auf anderem Rechner erzeugt, und der Erzeuger erhält einen Fernverweis darauf RemotingConfiguration. RegisterActivatedServiceType(typeof(Server)); Klient hier beispielhaft für Konstruktor mit 1 Argument: object[] attr = {new UrlAttribute("tcp://host:4711")}; object[] args = {"some constructor argument"}; Server s = (Server)Activator.CreateInstance( typeof(server), args, attr); 9

Programmbeispiele mit Anleitung zum Übersetzen und Konfigurieren: http://www.inf.fu-berlin.de/~lohr/slides/dotnetrem.ppt (Anhang) 10

8.1.6.2 Separate Konfiguration Herausziehen der Argumente aus der Erzeugungsoperation und stattdessen Übergabe an eine Konfigurierungs-Operation ermöglicht Fernerzeugung mittels new (nur parameterlos!) für und : RemotingConfiguration. RegisterWellKnownClientType( typeof(server), "tcp://host:4711/service"); Server s = new Server(); // no Activator.GetObject RemotingConfiguration. RegisterActivatedClientType( typeof(server), "tcp://host:4712/service"); Server s = new Server(); // no Activator.CreateInstance 11

Auslagerung der netzspezifischen Daten wie Rechnernamen, Portnummern, Protokollnamen, aus dem Programmtext in Konfigurationsdateien (XML) erlaubt deren Änderung ohne Neuübersetzung, flexibilisiert die Installation, verbessert die Verteilungsabstraktion. (Mehr dazu in http://www.inf.fu-berlin.de/~lohr/slides/dotnetrem.ppt ) 12

8.1.6.3 Parametermechanismen Parameterübergabe in C#: op(int n) Wertparameter (call-by-value) Bei Fernaufrufen: call-by-value op(ref int n) op(out int n) Variablenparameter (call-by-reference) Bei Fernaufrufen: call-by-value-result! Variablenparameter, evtl. nicht belegt Bei Fernaufrufen: call-by-result!... bei einfachen Typen. Bei Verweistypen zusätzlich... 13

Bei Verweistypen zusätzlich beachten (bei Argumenten und Ergebnissen!): Wenn Objekt fernaufrufbar (MarshalByRefObject): Fernverweis wird übergeben; sonst, wenn Objekt serialisierbar ( [Serializable] ): Objektkopie wird übergeben; sonst: Ausnahmemeldung Probleme wie bei Java RMI (8.1.5 )! 14