Leistungen
Leistungen
Überblick
Leistungsangebot
Kernkompetenzen
Schulungsthemen
In-House-Schulungen
Offene .NET-Seminare
Offene WPS-Seminare
Beratung
Support
.NET/Visual Studio
TFS/ALM/Scrum
Webprogrammierung
PowerShell
Konditionen
Anfrage/Kontakt
In-House-Schulungen
In-House-Schulungen
Überblick
Themen
Schulungskonfigurator
Konzepte
.NET/Visual Studio
C#
VB.NET
ASP.NET
TFS/ALM/Scrum
PowerShell
Konferenzvortraege
Referenzkunden
Trainerprofile
Konditionen
Anfrage
Offene Schulungen
Offene Schulungen
Überblick .NET-Seminare
.NET/C#-Basisseminar
WPF (Desktop)
ASP.NET/AJAX (Web)
WCF/WF (SOA)
ADO.NET/EF (Data)
Windows PowerShell
.NET
.NET
Startseite
Beratung/Training
Offene .NET-Seminare
Einführung
Lexikon
Artikel
Bücher
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
World Wide Wings Demo
Codebeispiele
Scripting
ASP.NET
.NET 2.0
.NET 3.0/3.5
.NET 4.0
Community
Forum
Kommerzielle Leistungen
ASP.NET
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Mehr zu ASP.NET 1.x
Mehr zu ASP.NET 2.0
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
PowerShell
PowerShell
Überblick
Beratung
In-House-Schulungen
Öffentliche Schulungen
Codebeispiele
Commandlet Extensions
Windows Scripting
Windows Scripting
Startseite
Lexikon
FAQ
Buecher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
ASP.NET
.NET-Scripting
Forum
Links
Kommerzielle Leistungen
Windows Server
Windows Server
Startseite
Lexikon
Forum
Service
Service
Website-FAQ
Anmeldung/Login
Leser-Registrierung
Gast-Registrierung
Nachrichten/RSS
Newsletter
Foren
Weblog Deutsch
Lexikon
Downloads
Support
Kontakt
Literaturtipps
Publikationen
Publikationen
Redaktionsbüro
Bücher
Fachartikel
Leser-Portal
Autoren gesucht!
Rezensionen
Über uns
Über uns
Holger Schwichtenberg
Team
Referenzkunden
Kundenaussagen
Referenzprojekte
Partner
Site Map
Tag Cloud
Impressum
Rechtliches
AGB

Erklärung des Begriffs: .NET Remoting
Was ist .NET Remoting?

Zurück zur Stichwortliste



Begriff .NET Remoting
Abkürzung
Synonyme/Aliase

Erläuterung des Begriffs .NET Remoting

.NET Remoting ein proprietäres Fernaufrufkonzept der Firma Microsoft im Rahmen des Microsoft .NET Framework, ver-gleichbar mit Remote Method Invocation (RMI) in Java. Anders als der Vorgänger Distributed Component Object Model (DCOM) ist .NET Remoting aber nicht auf ein bestimmtes Über-tragungsformat und -protokoll festgelegt und bietet eine Vielzahl von Aktivierungs- und Konfigurationsoptionen.

.NET Remoting wird von vielen Verfechtern der losen serviceorientierten Kopplung wegen seiner engen Kopplung kritisiert. In der in .NET 3.0 enthaltenen Kommunikationsinfrastruktur Indigo wird das .NET Re-moting-Modell nur noch in wenigen Teilen vertreten sein.
Anders als der Vorgänger DCOM ist .NET Remoting nicht auf ein bestimmtes Übertragungsformat und -protokoll festgelegt und bietet eine Vielzahl von Aktivierungs- und Konfigurationsoptionen.

Der Kern des .NET Remoting ist in der mscorlib.dll und der System.Runtime.Remoting.dll implementiert.

Enge Bindung



.NET Remoting unterscheidet zwischen der Objektübergabe By-Reference- oder By-Value. Außerdem wird unterschieden zwischen Objekt mit Server-Aktivierung (Server-Activated Objects – SAO, auch: Well Known Types) und Objekten mit Client-Aktivierung (Client-Activated Objects – CAO, auch: Activated Types).

Im CAO-Fall ist immer (sowohl im By-Value als auch By-Reference-Fall) eine Klasse zu verwenden – die Aktivierung ist über die Schnittstelle alleine nicht möglich. Der Objekttyp kann im SAO-Fall dem Client durch eine Klasse oder eine Schnittstelle bekannt gegeben werden. Die Nutzung einer Schnittstelle hat den Vorteil, dass der Client nur die Schnittstelle kennen muss, nicht die eigentliche Implementierung. SAO ist allerdings mit einem Call-by-Reference möglich.

Bei den server-aktivierten Objekten unterscheidet man ferner zwischen zwei Fällen:
- Single Call: Bei jedem Methodenaufruf wird eine neue Objektinstanz erzeugt. Folglich müssen die Objekte zustandslos sein, da zwei nachfolgende Methodenaufrufe nicht das gleiche Objekt erreichen.
- Singleton: In diesem Fall existiert nur eine Objektinstanz, bei der alle Client-Objekte ein und dasselbe Server-Objekt verwenden. Ein solches Objekt eignet sich z. B. zum Austausch von Daten zwischen Clients.

Bei der Client-Aktivierung erhält der Client die Kontrolle über Art und Anzahl der Server-Objekte. Hier wird bei jeder Instanziierung im Client ein zugehöriges Objekt auf dem Server erzeugt, d. h. die Anzahl der Objekte, die der Client sieht, entspricht der Anzahl der Objekte auf dem Server.

Protokolle und Formate


Anders als der Vorgänger DCOM ist .NET Remoting nicht auf ein bestimmtes Übertragungsformat und -protokoll festgelegt und bietet eine Vielzahl von Aktivierungs- und Konfigurationsoptionen.

Zur Übertragung des Fernaufrufs verwendet .NET Remoting Formatter und Channels:
- Ein Formatter ist ein Mechanismus, der ein Objekt in einen Byte-Strom umzuwandelt bzw. zurückwandelt. Man spricht in diesem Zusammenhang von Serialisierung bzw. Deserialisierung. .NET 2.0 enthält einen binären und einen SOAP-Formatter.
- Ein Channel bietet ein Transportmedium für serialisierte Objekte an. .NET 2.0 enthält TCP, HTTP, IPC (Inter-Prozess-Kommunikation) sowie einen Application-Domain-internen Channel.

Unterschiede zu den Webservices


Hinsichtlich der Performanz ist .NET Remoting über TCP mit dem binären Formatter wesentlich performanter als über HTTP/SOAP. Auch HTTP/binär ist schneller als HTTP/SOAP. Remoting über HTTP/SOAP ist ähnlich performant wie XML-Webservices. Keines der vorgenannten Verfahren ist jedoch so schnell wie DCOM.

Unterschiede zu den Webservices


.NET Remoting mit dem SOAP-Formatter über HTTP ist nicht gleichzusetzen mit XML-Webservices, auch wenn dort ebenfalls SOAP und HTTP zum Einsatz kommen. .NET Remoting mit SOAP/HTTP ist nur unter bestimmten Voraussetzungen kompatibel mit XML-Webservices (siehe [MSDN12]). .NET Remoting nutzt das so genannte »RPC-codierte« SOAP, das nicht Teil des Basic Profile der Web Services Interoperability Organization (WS-I) ist. Die Bereitstellung von XML-Webservices via .NET Remoting beschränkt daher die Interoperabilität zu anderen Plattformen und die daher nicht zu empfehlen.

Hosting


Damit ein Objekt für Remoting-Clients überhaupt erreichbar ist (also die Funktionalitäten zur Verfügung stellt, die das Objekt zum Server macht), muss der Server in einem Host-Prozess angeboten werden. Unter COM hat die Laufzeitumgebung selbst einen universellen Host angeboten – das .NET Framework stellt einen solchen Host-Prozess nicht zur Verfügung. Unter .NET existieren für das Hosting folgende Optionen:
- Entwicklung eines eigenen Host (z. B. in Form einer Konsolenanwendung oder eines Windows-Dienstes)
- Nutzung des Internet Information Server (IIS)
- Nutzung des COM+ Application Servers (alias .NET Enterprise Services)

Weitere Möglichkeiten


- Deklarative Remoting-Konfiguration: Neben der Konfiguration von Client und Server durch Programmcode ist alternativ auch eine Konfiguration innerhalb einer XML-Anwendungskonfigurationsdatei möglich. Die deklarative und die programmatische Konfiguration können parallel angewendet werden, d. h. eine Anwendung kann auch noch weitere Ports im Programmcode deklarieren, obwohl bereits eine Konfigurationsdatei eingelesen wurde.
- Lebensdauer: In DCOM verwendet ein Server die Referenzzählung seiner Clients und ein Client einen periodischen Ping, um die fortwährende Existenz des Servers zu prüfen. .NET Remoting vermeidet den Netzwerk-Overhead durch einen Lebensdauer-Mechanismus mit Leihdauer (Lease). Jedes Objekt ist mit einer Time-to-Live (TTL) versehen, die heruntergezählt wird. Die Standard¬lebensdauer beträgt fünf Minuten. Ein Server-Objekt kann die Dauer aber auf andere Werte setzen (auch auf »unendlich«). Die Lebensdauer eines Objekts kann durch einen erneuten Methodenaufruf oder durch so genannte Sponsoren verlängert werden.
- Austausch generischer Datentypen: Ab .NET 2.0 unterstützt .NET Remoting auch generische Datentyoen
- Authentifizierung und Verschlüsselung: Ab .NET 2.0 wird in TCP- und IPC-Channel Authentifizierung und Verschlüsselung untersützt. In .NET 1.x gab es keinerlei Sicherheitsfunktionen.
- Zugriffsrechtelisten: Der in .NET 2.0 neu eingeführte IPC-Channel unterstützt auch Zugriffsrechtelisten (ACLs).



[MSDN12]
ASP.NET Web Services oder .NET Remoting - So treffen Sie die richtige Entscheidung
http://www.microsoft.com/germany/msdn/library/net/ASPNETWebServicesOderNETRemotingSoTreffenSieDieRichtigeEntscheidung.mspx

Artikel in gedruckten Medien

  • Reise nach Vaubekien: Remoting
     (DotNetPro - Das .NET-Magazin für Entwickler, 2006)
  • Microsoft .NET 3.0 Crashkurs
     (.NET 3.0 Crashkurs, 2007)
  • Stichwort ".NET Remoting"
     (Fachkompendium Protokolle und Dienste, 2006)
  • Querverweise zu anderen Begriffen im Lexikon

    Distributed Component Object Model
    Internet Information Server
    Remote Method Invocation
    .NET Enterprise Services
    Client-Activated Object
    System.Runtime.Remoting
    Server-Activated Object
    Component Object Model
    Konfigurationsdatei
    Authentifizierung
    Deserialisierung
    XML-Webservice
    Activated Type
    Serialisierung
    Webservice
    Singleton
    Formatter
    Netzwerk
    .NET 3.0
    Channel
    Indigo
    Java
    COM+