Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Thema bezieht sich auf eine veraltete Technologie, die zum Zwecke der Abwärtskompatibilität mit vorhandenen Anwendungen beibehalten wird und nicht für die neue Entwicklung empfohlen wird. Verteilte Anwendungen sollten jetzt mit Windows Communication Foundation (WCF) entwickelt werden.
Um einen Client des in Vorgehensweise: Erstellen eines remotefähigen Typs definierten Remotetyps zu erstellen, der von der in Vorgehensweise: Erstellen einer Hostanwendung erstellten Anwendung gehostet wird, muss sich die Anwendung als Client für dieses Remoteobjekt registrieren und es dann so aufrufen, als ob es sich innerhalb der Anwendungsdomäne des Clients befände. Das .NET-Remotesystem fängt die Clientaufrufe ab, leitet sie an das Remoteobjekt weiter, und gibt die Ergebnisse an den Client zurück. Die folgende Prozedur beschreibt, wie Sie einen Basisremoteclient erstellen.
Hinweis: |
|---|
| Vollständige Anweisungen zum Erstellen und Ausführen dieses Beispiels finden Sie unter Vorgehensweise: Kompilieren und Ausführen einer Basisremoteanwendung. |
So erstellen Sie einen Basisremoteclient
Erstellen Sie ausgehend von Vorgehensweise: Erstellen einer Hostanwendung ein neues Verzeichnis unter
remotingmit dem Namenclient. Erstellen Sie, wie im folgenden Code gezeigt, eine Konfigurationsdatei für die Clientanwendung, und speichern Sie die Datei im Verzeichnisremoting\client. Der Dateiname sollte das Format Anwendungsname.exe.config haben. In diesem Fall wird der Nameclient.exe.configzugewiesen Die folgende Konfigurationsdatei teilt dem Remotesystem mit, dass sich die Typeninformationen für dasRemotableType-Remoteobjekt in derRemotableType-Assembly befindet und dass das Objekt unter https://localhost:8989/RemotableType.rem zu finden ist.<configuration> <system.runtime.remoting> <application> <client> <wellknown type="RemotableType, RemotableType" url="https://localhost:8989/RemotableType.rem" /> </client> </application> </system.runtime.remoting> </configuration>Ausführliche Informationen über das URL-Attribut in dieser Konfigurationsdatei finden Sie unter Aktivierungs-URLs. Wenn Sie diese Anwendung über ein Netzwerk ausführen möchten, müssen Sie localhost in der Clientkonfiguration durch den Namen des Remotecomputers ersetzen.
Hinweis:Die obige Konfigurationsdatei enthält zwar nur ein paar Einstellungen, die meisten Probleme bei der Verwendung von .NET-Remoting treten jedoch auf, weil einige dieser Einstellungen entweder falsch sind oder nicht mit den Konfigurationseinstellungen für Clientanwendungen übereinstimmen. Es passiert schnell, dass ein Name falsch geschrieben, ein Anschluss vergessen oder ein Attribut nicht angegeben wird. Wenn Sie Probleme mit Ihrer Remoteanwendung haben, überprüfen Sie zuerst die Konfigurationseinstellungen. Erstellen Sie eine neue Quelldatei in der Sprache Ihrer Wahl. Rufen Sie in der Hauptmethode RemotingConfiguration.Configure auf, und übergeben Sie den Namen der Clientkonfigurationsdatei (
client.exe.config). Instanziieren Sie danach eineRemotableType-Instanz, und rufen Sie die zugehörigeSayHello-Methode auf. Speichern Sie die Clientanwendung alsClient.csoderClient.vbim Verzeichnisremoting\client.
Hinweis:Die Clientanwendung darf nicht im selben Verzeichnis wie die Anwendung Listener.exe gespeichert werden. Wenn die Anwendungen im selben Verzeichnis gespeichert wurden, können Sie nicht sicher sein, dass Sie einen Remoteverweis empfangen und verwenden, weil in diesem Fall eine Assembly- und Typauflösung stattfinden kann. Public Shared Sub Main() RemotingConfiguration.Configure("Client.exe.config") Dim remoteObject As New RemotableType() Console.WriteLine(remoteObject.SayHello()) End Sub 'Mainpublic static void Main(){ RemotingConfiguration.Configure("Client.exe.config"); RemotableType remoteObject = new RemotableType(); Console.WriteLine(remoteObject.SayHello()); }Kopieren Sie die RemotableType.dll-Assembly aus
remoting\Typeinremoting\client.
Hinweis:Eine an diesem Punkt häufig gestellte Frage lautet: "Woher weiß ich, dass das Remoteobjekt aufgerufen wird, wenn ich die Assembly auf den Client kopiere?". Genau aus diesem Grund wurde der Aufruf von Console.WriteLinein derRemotableType.SayHello()-Methode hinzugefügt. Wenn das Remoteobjekt aufgerufen wird, trittWriteLineim Listenerprozess auf, wennWriteLinenicht im Clientprozess auftritt.Kompilieren Sie die Clientanwendung, indem Sie den folgenden Befehl im Verzeichnis
remoting\clienteingeben:vbc /r:RemotableType.dll Client.vbcsc /noconfig /r:RemotableType.dll Client.csÖffnen Sie zwei Eingabeaufforderungen. Wechseln Sie in der einen zum Verzeichnis remoting\listener, und führen Sie listener.exe aus. Wechseln Sie in der anderen zum Verzeichnis remoting\client, und führen Sie client.exe aus. Die Clienteingabeaufforderung müsste wie folgt aussehen:
C:\tmp\Remoting\client>client Hello, worldDie Listenereingabeaufforderung müsste wie folgt aussehen:
C:\tmp\Remoting\listener>listener Listening for requests. Press Enter to exit... RemotableType.SayHello() was called!Sie sehen an der Ausgabe des Listeners, dass er einen Aufruf für
RemotableType.SayHello()empfangen hat.
Beispiel
' Client.vb
Imports System
Imports System.Runtime.Remoting
Public Class Client
Public Shared Sub Main()
RemotingConfiguration.Configure("Client.exe.config")
Dim remoteObject As New RemotableType()
Console.WriteLine(remoteObject.SayHello())
End Sub 'Main
End Class 'Client
// Client.cs
using System;
using System.Runtime.Remoting;
public class Client{
public static void Main(){
RemotingConfiguration.Configure("Client.exe.config");
RemotableType remoteObject = new RemotableType();
Console.WriteLine(remoteObject.SayHello());
}
}
Siehe auch
Aufgaben
Vorgehensweise: Erstellen einer Hostanwendung
Verweis
Schema für Remoteeinstellungen
Konzepte
Konfiguration von Remoteanwendungen
Serveraktivierung
Weitere Ressourcen
Erstellen einer .NET Framework-Basisremoteanwendung
Erstellungsdatum: 2010-02-13