1 vs8.1.6 8.1.6.NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung.

Slides:



Advertisements
Ähnliche Präsentationen
der Universität Oldenburg
Advertisements

DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
DI Christian Donner cd (at) donners.com
Internetzugriff mit Strings und Streams
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Konstruktoren.
Programmieren mit JAVA
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
JAVA RMI.
Packages Vortrag : Cornelia Hardt 23. November 1999.
1DVG3 - anonyme Klassen Anonyme Klassen. DVG3 - anonyme Klassen 2 Syntax new BasisKlasse(Parameterliste) { Modifikationen und Erweiterungen der Basisklasse.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Einführung in Java1 Einführung in JAVA.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
© 2005 Pohlig - Taulien Datenströme GK Informatik 1 Datenströme.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
1 Softwareentwicklung mit.NET Teil 6.NET Remoting Dr. Ralph Zeller.
Entwicklung verteilter Anwendungen I, WS 13/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 1 Folie 2 Microsoft.NET Framework: Quelle:
7.1.5 Java RMI – Remote Method Invocation
Javelin Internet-based parallel computing using Java.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Instanzmethoden
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Voyager Eigenschaften/Vorzüge Universalität: –ROI-Modelle: CORBA, RMI, DCOM –verschiedene Namens-, Verzeichnisdienste Nachrichtentypen: synchron, oneway,
Die AppDomain Das unbekannte Wesen?
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Vs Grundzüge der Fernaufruf-Implementierung = tatsächliche Aufrufbeziehungen Netz Fernaufrufdienst Transportdienst Hardware BS aus Bibl. Vertreter.
7.2.4 Klassifikation mobilen Codes Nicht vergessen:  Sowohl das Fernkopieren als auch die Migration von Objekten setzt voraus, daß der Code entweder am.
8.4 Microsoft.NET Framework =  CLR – Common Language Runtime ist objektorientierte virtuelle Maschine für Ausführung.
Vs Replizierte Objekte Vollständige Replikationsabstraktion ist attraktiv und machbar. 2 Beispiele: Orca(H. Bal, VU Amsterdam, ) = klassenbasierte,
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
NET Remoting.Net („dotnet“) :von Microsoft eingeführte Plattform für verteilte Anwendungen, virtuelle Maschine für die verteilte Ausführung von.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Vs Java RMI – Remote Method Invocation ( ) (
Vs3 1 3 Netzdienste im Internet. vs3 2 Netzdienste = über Ports ansprechbare Dienste, die hauptsächlich (aber nicht nur) für die Fernnutzung gedacht sind.
Klassen in Java.
Konstruktoren.
(mobile objects, auch Objektmigration, object migration)
Objektorientierung Gliederung von Daten und Funktionen zu Objekten
Vererbung.
Hello World! Javakurs 2013 Arne Kappen
Zwei Denkansätze zur Klasse Schlange
Allgemeine Befehle für die allgemeine Liste
Einführung in die Programmierung mit Java
Grundkurs Informatik 11-13
Von Cem, Maurice und lars
Es gibt Klassen, die mit der Entwicklungsumgebung ausgeliefert werden
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Polymorphie Überladen
Ein Referat von Sabrina Vissel, darleen paul und yannick fuchs
Interfaces Definition von Interfaces Verwendung von Interfaces
Objektorientierung Klassen und Objekte Dr. Beatrice Amrhein.
«Delegierter» Methoden Schablone Funktionszeiger
1. Die rekursive Datenstruktur Liste 1
9. Vererbung und Polymorphie
Implementieren von Klassen
 Präsentation transkript:

1 vs 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“) :Referenzsprache für.NET, Microsoft‘s Antwort auf Java.NET Remoting :Fernaufrufe auf der.NET-Plattform

2 vs 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; }

3 vs8.1.6 Objekterzeugung und –bekanntmachung in 3 Varianten:  Bekanntmachung eines öffentlichen Objekts: Objekt wird lokal erzeugt und dann „veröffentlicht“  Fernerzeugung eines öffentlichen Objekts: (bezeichnet als Server Activated Object, SAO) Erzeugung wird lokal vorbereitet, aber erst dann durchgeführt, wenn der erste Klient Interesse zeigt  Fernerzeugung eines privaten Objekts: (bezeichnet als Client Activated Object, CAO) Objekt wird auf anderem Rechner erzeugt, und der Erzeuger erhält einen Fernverweis darauf

4 vs8.1.6  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 !

5 vs8.1.6 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

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

7 vs8.1.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 )

8 vs8.1.6 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.

9 vs8.1.6  Fernerzeugung eines privaten Objekts (CAO): Objekt wird auf anderem Rechner erzeugt, und der Erzeuger erhält einen Fernverweis darauf Server: RemotingConfiguration. RegisterActivatedServiceType(typeof(Server)); Klient: Fernerzeugung mit Angabe von Konstruktor-Argumenten object[] attr = {new UrlAttribute("tcp://host:4711")}; object[] args = {"some constructor argument"}; Server s = (Server)Activator.CreateInstance( typeof(Server), args, attr);

10 vs Programmerstellung Datei server.cs enthält public class Server : MarshalByRefObject { public string echo(string s) {... } Datei main.cs enthält public class ServerMain { public static void Main() { // prepare Server object and wait..... Datei client.cs enthält public class Client { public static void Main() { // use Server object..... Dateiname und Klassenname dürfen verschieden sein!

11 vs8.1.6 csc /t:library server.cs erzeugt server.dll csc /r:server.dll main.cs erzeugt server.exe csc /r:server.dll client.cs erzeugt client.exe Anklicken von server.exe startet den Server Anklicken von client.exe startet den Klienten

12 vs8.1.6 Falls Implementierung des Dienstes (Klasse Server ) nicht beim Klienten bekannt, Schnittstelle verwenden: public interface Service { string echo(string s); } public class Server : MarshalByRefObject, Service {..... } public class Client { public static void Main(string[] arg) { Service s = (Service)Activator.GetObject( typeof(Service), "tcp://host:4711/Service");..... }} ! Bei Aufruf muß Schnittstelle beim Server gleichen Namen haben, und Operation/Signatur muß unterstützt werden – wird alles dynamisch geprüft !

13 vs Callbacks Klienten-Objekt: public class CallbackClient : MarshalByRefObject { public string getName() { return "client"; } Server-Objekt, tätigt Callback: public class CallbackServer : MarshalByRefObject { public string sayHelloTo(CallbackClient c) { return "hello " + c.getName(); }

14 vs8.1.6 Klienten-Prozess, übergibt Klienten-Objekt an Server-Objekt: public class ClientMain { public static void Main() { TcpChannel chan = new TcpChannel(4712); ChannelServices.RegisterChannel(chan); CallbackClient c = new CallbackClient(); CallbackServer s = (CallbackServer) Activator.GetObject( typeof(CallbackServer), "tcp://host:4711/Service"); Console.WriteLine("server says: " + s.sayHelloTo(c)); }

15 vs8.1.6 Server-Prozess, erfordert speziellen Kanal: public class ServerMain { public static void Main() { // setup channel that deserializes remote references IDictionary props = new Hashtable(); props["port"] = 4711; BinaryClientFormatterSinkProvider clientProv = new BinaryClientFormatterSinkProvider(); BinaryServerFormatterSinkProvider serverProv = new BinaryServerFormatterSinkProvider(); serverProv.TypeFilterLevel = System.Runtime.Serialization.Formatters.TypeFilterLevel.Full; TcpChannel chan = new TcpChannel(props, clientProv, serverProv); ChannelServices.RegisterChannel(chan); // setup and bind server CallbackServer s = new CallbackServer(); RemotingServices.Marshal(s, "Service"); Console.ReadLine(); // wait... } TCP-Channel Anwendung ClientServer Filter

16 vs8.1.6 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/"); Server s = new Server(); // no Activator.CreateInstance Separate Konfiguration

17 vs8.1.6 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.

18 vs8.1.6 und Datei server.exe.config mit folgendem Inhalt: <wellknown mode="Singleton" type="Server,server" objectUri="Service"/> Klasse Assembly ( server.dll ) Serverseitig für  : RemotingConfiguration.Configure("server.exe.config"); Server s = new Server(); Konvention: Programm +.config

19 vs8.1.6 Klientenseitig für  : RemotingConfiguration.Configure("client.exe.config"); Server s = new Server(); und Datei client.exe.config mit folgendem Inhalt: <wellknown type="Server,client" url="tcp://host:4711/Service"/>

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

21 vs8.1.6 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  )!8.1.5