Share via


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.

NoteHinweis:

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

  1. Ausgehend von Gewusst wie: Erstellen einer Hostanwendung erstellen Sie unter remoting ein neues Verzeichnis mit dem Namen client. Erstellen Sie, wie im folgenden Code gezeigt, eine Konfigurationsdatei für die Clientanwendung, und speichern Sie die Datei im Verzeichnis remoting\client. Der Dateiname sollte das Format Anwendungsname.exe.config haben. In diesem Fall wird der Name client.exe.config zugewiesen Die folgende Konfigurationsdatei teilt dem Remotesystem mit, dass sich die Typeninformationen für das RemotableType-Remoteobjekt in der RemotableType-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.

    NoteHinweis:

    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.

  2. 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 eine RemotableType-Instanz, und rufen Sie die zugehörige SayHello-Methode auf. Speichern Sie die Clientanwendung als Client.cs oder Client.vb im Verzeichnis remoting\client.

    NoteHinweis:

    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());
       }
    
  3. Kopieren Sie die RemotableType.dll-Assembly aus remoting\Type in remoting\client.

    NoteHinweis:

    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 der RemotableType.SayHello()-Methode hinzugefügt haben. Wenn das Remoteobjekt aufgerufen wird, tritt WriteLine im Listenerprozess auf, wenn WriteLine nicht im Clientprozess auftritt.

  4. 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
    
  5. Ö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 
    
  6. Die Listenereingabeaufforderung müsste wie folgt aussehen:

    C:\tmp\Remoting\listener>listener
    Listening for requests. Press Enter to exit...
    RemotableType.SayHello() was called!
    
  7. 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

Footer image

Copyright © 2007 by Microsoft Corporation. Alle Rechte vorbehalten.