www.wikidata.de-de.nina.az
NET Remoting ist ein umfassendes erweiterbares Framework fur die Entwicklung verteilter Anwendungen und als solches Teil von Microsofts NET Framework Es dient der nahtlosen Kommunikation zwischen Objekten die sich in verschiedenen Applikationsdomanen oder Prozessen bzw auf unterschiedlichen Computern befinden Es ermoglicht sozusagen die Kommunikation zwischen Applikationen die lokal am selben Computer auf verschiedenen Computern im selben Netzwerk oder sogar auf Computern uber mehrere Netzwerke hinweg liegen NET Remoting wurde in die Common Language Runtime CLR eingebaut Dadurch sind einheitliche Schnittstellen zu anderen Technologien in NET gegeben NET Remoting wird von Microsoft mittlerweile als veraltete Technologie bezeichnet und nicht mehr zur Entwicklung verteilter Anwendungen empfohlen Die empfohlene Nachfolgetechnologie war zunachst die ebenfalls zu NET gehorige Windows Communication Foundation Da diese jedoch fur NET Core nicht zur Verfugung steht empfiehlt Microsoft stattdessen gRPC das den Vorteil hat plattformubergreifend zur Verfugung zu stehen 1 Inhaltsverzeichnis 1 Die Geschichte der NET Kommunikation 2 MarshalByRefObject 3 RPC 4 Interfaces 5 Proxyobjekte 6 Channel 7 Erzeugung entfernter Objekte 8 NET Remoting 2 0 9 Literatur 10 Weblinks 11 EinzelnachweiseDie Geschichte der NET Kommunikation BearbeitenFruher wurde die interaktive Kommunikation zwischen Programmen mit DCOM Distributed COM durchgefuhrt das bei Computern die sich im selben Netzwerk befinden problemlos und schnell funktioniert Sollte aber eine Kommunikation ubers Internet stattfinden mussen mit DCOM enorme Hurden genommen werden Ausserdem ist es kaum moglich DCOM uber eine Firewall zu betreiben da DCOM versucht uber mehrere Ports die ublicherweise standardmassig bei einer Firewall blockiert sind seine Verbindung aufzubauen NET Remoting merzt die Probleme von DCOM aus indem es mehrere Protokolle unterstutzt MarshalByRefObject BearbeitenMit Remoting ist es wie bereits oben erwahnt moglich verteilte RPC basierte Objektsysteme zu erstellen Die Anwendung von Remoting ist denkbar einfach Die Klassenbibliothek definiert eine Klasse MarshalByRefObject die Basisklasse fur alle verteilten Objekte ist Will man per Objektreferenz auf eine Instanz einer Klasse uber Prozessgrenzen hinweg zugreifen genugt es die Klasse von MarshalByRefObject abzuleiten wie folgendes Beispiel zeigt public class Foo MarshalByRefObject RPC BearbeitenDie grundsatzliche Kommunikation in Remotingsystemen ist Remote Procedure Call RPC basiert Die Architektur von Remoting benennt als wesentliche Elemente Verteilte Objekte Proxys und TransportkanaleDabei ist jedes dieser Elemente individuell anpassbar und erweiterbar Verteilte Elemente werden anders als bei DCOM nicht mehr in der Registry von Windows registriert sondern durch einen so genannten Service Host publiziert Ein Service konnte beispielsweise ein einfaches Konsolen bzw Windowsprogramm ein Windows Systemdienst oder der Internet Information Server IIS sein Interfaces BearbeitenAnders als bei DCOM mussen die Interfaces der verteilten Objekte nicht mehr in einer IDL Interface Definition Language beschrieben werden Es ist moglich Interfaces zu verwenden oder einfach die Klasse der verteilten Objekte zu den Clients zu transportieren Die Verwendung von Interfaces ist dabei besonders attraktiv da das Interface Konzept elementarer Bestandteil der Plattformen ist und somit von allen NET konformen Sprachen verstanden werden kann z B ein C Interface konnte auch durch ein Visual Basic NET Interface dargestellt werden Es hat denselben Effekt public interface IFoo void MachWas string doit Public Interface IFoo Sub MachWas ByVal doit As String End Interface Wichtig dabei ist dass das C Interface z B in einer Visual Basic NET Klasse implementiert werden kann oder umgekehrt Aufgrund der Spracheninteroperabilitat der NET Plattform konnen Interfaces bis zu einem gewissen Grad eine IDL vollstandig ersetzen Proxyobjekte BearbeitenProxyobjekte werden bei der Aktivierung eines Remoteobjekts durch einen Client erstellt Das Proxyobjekt verhalt sich wie ein Stellvertreter des Remoteobjekts Es stellt sicher dass alle fur den Proxy gesendeten Aufrufe an die richtige Remoteobjektinstanz weitergeleitet werden Wenn ein Client ein Remoteobjekt aktiviert erstellt das Framework eine lokale Instanz der TransparentProxy Klasse die eine Liste aller Klassen sowie der Schnittstellenmethoden des Remoteobjekts enthalt Da die TransparentProxy Klasse beim Erstellen der CLR registriert wird werden alle Methodenaufrufe fur den Proxy von der CLR abgefangen Hier wird der Aufruf untersucht um zu ermitteln ob es sich um eine zulassige Methode des Remoteobjekts handelt und ob sich eine Instanz des Remoteobjekts in derselben Anwendungsdomane wie der Proxy befindet Ist dies der Fall wird ein einfacher Methodenaufruf an das eigentliche Objekt weitergeleitet Befindet sich das Objekt in einer anderen Anwendungsdomane werden die Aufrufparameter im Stapel in ein IMessage Objekt gepackt und an die RealProxy Klasse uber den Aufruf ihrer Invoke Methode weitergeleitet Diese Klasse oder vielmehr eine interne Implementierung der Klasse ist fur die Weiterleitung der Meldungen an das Remoteobjekt zustandig Sowohl die TransparentProxy Klasse als auch die RealProxy Klasse werden bei der Aktivierung eines Remoteobjekts geschutzt erstellt aber nur TransparentProxy wird an den Client zuruckgegeben TransparentProxy ist eine interne Klasse die nicht ersetzt oder erweitert werden kann Die RealProxy Klasse und die ObjRef Klasse sind wiederum offentlich und konnen bei Bedarf erweitert und angepasst werden Die RealProxy Klasse ist z B ein idealer Kandidat fur die Durchfuhrung des Lastenausgleichs da sie alle Funktionsaufrufe fur ein Remoteobjekt bearbeitet Wenn Invoke aufgerufen wird kann eine von RealProxy abgeleitete Klasse Informationen zur Belastung von Servern im Netzwerk abrufen und den Aufruf an den entsprechenden Server weiterleiten Channel BearbeitenAuf entfernte Objekte Remote objects wird mittels so genannten Channels zugegriffen Channels transportieren die Nachricht zum Objekt hin oder vom Objekt weg Es gibt zwei Channel die wichtig sind TcpChannel und HttpChannel Diese konnen auch abgeleitet werden sodass ein eigener Channel nach seinen Bedurfnissen erstellt werden kann Erzeugung entfernter Objekte BearbeitenWie bereits anfangs erwahnt gibt es das MarshalByRefObject von dem die Klasse abgeleitet sein muss Jedoch gibt es zwei unterscheidbare Vorgangsweisen wie entfernte Objekte erstellt werden konnen Objekterzeugung durch Server Server activated objects Objekterzeugung durch Client Client activated objects Bei Server activated objects SAO werden die Objektinstanzen im Server erzeugt Alternative Verfahren waren hierbei Single call object bei jedem Aufruf wird ein neues Objekt erzeugt und danach zerstort auf Server Farmen kann dadurch die Last verteilt werden Singleton object es gibt eine einzige Objektinstanz fur alle Clients Objekt wird mit Serverstart erzeugt Published objectBei Client activated objects CAO erzeugt der Client die Objekte Alternative Verfahren waren direkte Erzeugung Erzeugung uber Fabrik Factory NET Remoting 2 0 BearbeitenEine neuere Version NET Remoting 2 0 ist bereits vorhanden die Unterstutzung fur IPv6 Adressen und den Austausch der generischen Typen bietet Neu ist auch der Remoting Channel IPC fur die lokale Inter Prozess Kommunikation ohne Verwendung eines Netzwerkprotokollstacks Literatur BearbeitenIngo Rammer Advanced NET Remoting Apress 2005 ISBN 978 1 59059 417 9Weblinks BearbeitenUbersicht uber NET Framework Remoting in der MSDN Library Dokumentation zum NET Framework PDF Datei uber Remoting PDF Datei 259 kB PDF Datei uber NET allgemein behandelt auch Remoting PDF Datei 201 kB Einzelnachweise Bearbeiten shirhatti Einfuhrung GrpC fur WCF Entwickler Abgerufen am 28 November 2019 deutsch Abgerufen von https de wikipedia org w index php title NET Remoting amp oldid 199050548