Gewusst wie: Erstellen einer Clientanwendung
Um einen Client des in Gewusst wie: Erstellen eines remotefähigen Typs definierten Remotetyps zu erstellen, der von der in Gewusst wie: 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 Gewusst wie: Kompilieren und Ausführen einer Basisremoteanwendung. |
So erstellen Sie einen Basisremoteclient
Ausgehend von Gewusst wie: Erstellen einer Hostanwendung erstellen Sie unter
remoting
ein neues Verzeichnis mit 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.config
zugewiesen 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.cs
oderClient.vb
im 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 'Main public static void Main(){ RemotingConfiguration.Configure("Client.exe.config"); RemotableType remoteObject = new RemotableType(); Console.WriteLine(remoteObject.SayHello()); }
Kopieren Sie die RemotableType.dll-Assembly aus
remoting\Type
inremoting\client
.Hinweis: An diesem Punkt stellt man sich häufig die folgende Frage: "Woher weiß ich, dass das Remoteobjekt aufgerufen wird, wenn ich die Assembly auf den Client kopiere?" Das ist genau der Grund, aus dem wir den Aufruf
Console.WriteLine
in derRemotableType.SayHello()
-Methode hinzugefügt haben. Wenn das Remoteobjekt aufgerufen wird, trittWriteLine
im Listenerprozess auf, wennWriteLine
nicht im Clientprozess auftritt.Kompilieren Sie die Clientanwendung, indem Sie den folgenden Befehl im Verzeichnis
remoting\client
eingeben:vbc /r:RemotableType.dll Client.vb csc /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, world
Die 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
Gewusst wie: Erstellen einer Hostanwendung
Referenz
Schema für Remoteeinstellungen
Konzepte
Konfiguration von Remoteanwendungen
Serveraktivierung
Weitere Ressourcen
Erstellen einer .NET Framework-Basisremoteanwendung
Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.