Technologiebeispiel für benutzerdefinierte Proxys
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.
In diesem Beispiel wird die Erweiterbarkeit der RealProxy-Klasse veranschaulicht. Durch Erweitern von RealProxy erhält Benutzercode Zugriff auf Nachrichten, die an ein bzw. von einem beliebigen Remoteobjekt übertragen werden. Im Beispiel werden drei ausführbare Dateien erstellt. Die Anwendung ProxyWithReturnMessage.exe überschreibt die Invoke-Methode, um Meldungsdaten anzuzeigen. Die Anwendung ProxyWithCustomCasting.exe verwendet zwei Schnittstellen, IFaq und IBaz, zum Veranschaulichen benutzerdefinierter Umwandlungsfunktionalität. Die Anwendung ProxyWiredToHttpChannel.exe veranschaulicht das Abfangen und Weiterleiten des Aufrufs des RemotingHello-Dienst über den HTTP-Kanal.
Hinweis: |
---|
Für dieses Beispiel muss auf dem Computer Internetinformationsdienste (IIS) installiert sein. Sie müssen den RemotingHello-Dienst vor dem Ausführen von Beispielanwendungen bei IIS registrieren. |
So erstellen Sie das Beispiel mithilfe der Eingabeaufforderung
Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zum Unterverzeichnis CS.
Geben Sie msbuild CustomProxiesCS.sln in der Befehlszeile ein.
Hinweis: In diesem Beispiel werden drei Konsolenanwendungen erstellt. Sie müssen sie über die Eingabeaufforderung starten und ausführen, um die Ausgabe anzuzeigen.
So erstellen Sie das Beispiel mithilfe von Visual Studio
Öffnen Sie Windows Explorer, und navigieren Sie zum Unterverzeichnis CS.
Doppelklicken Sie auf das Symbol für CustomProxiesCS.sln, um die Datei in Visual Studio zu öffnen.
Wählen Sie im Menü Erstellen die Option Projektmappe erstellen.
So registrieren Sie den Dienst bei IIS:
Kompilieren Sie den Dienst in eine DLL, und kopieren Sie diese DLL in das Verzeichnis bin, aus dem der Dienst geladen wird. Beim Erstellen des Beispiels mithilfe der Eingabeaufforderung oder von Visual Studio, wie vorhergehend beschrieben, wird der Dienst kompiliert, das Unterverzeichnis bin im Verzeichnis ProxyWiredToHttpChannel erstellt und Hello.dll dorthin kopiert.
Starten Sie den Internetdienste-Manager, und wählen Sie unter dem Serverknoten Standardwebsite aus. Wählen Sie im Menü nacheinander Aktion, Neu, Virtuelles Verzeichnis aus, und klicken Sie auf Weiter.
Geben Sie als Alias RemotingHello ein, und klicken Sie dann auf Weiter.
Geben Sie das Verzeichnis ein, in dem sich der Dienst befindet. Geben Sie den vollständigen Pfad ohne das Verzeichnis bin ein, in das Sie in Schritt 1 die DLL kopiert haben.
Klicken Sie auf Weiter. Akzeptieren Sie die angegebenen Standardwerte, und klicken Sie wieder auf Weiter. Klicken Sie auf Fertig stellen. Der Dienst wurde nun registriert und wird in der Liste der Standardwebsites im Webdienste-Manager-Fenster angezeigt.
Stellen Sie sicher, dass eine web.config-Datei im Verzeichnis, in dem der Dienst registriert wurde, vorhanden ist. Diese Datei beschreibt den Dienst und wird automatisch geladen, wenn ein Client mit einem Browser oder einem Client über den HTTP-Kanal auf Anschluss 80 auf den Dienst zuzugreifen versucht.
So führen Sie das Beispiel aus
Navigieren Sie zu dem Verzeichnis, das eine der drei ausführbaren Dateien enthält:
ProxyWiredToHttpChannel.exe
ProxyWithCustomCasting.exe
ProxyWithReturnMessage.exe
Jede ausführbare Datei befindet sich im Unterverzeichnis \bin\Debug im Verzeichnis mit demselben Namen wie die Konsolenanwendung.
Geben Sie in der Befehlszeile den Namen der ausführbaren Datei ein. Stellen Sie sicher, dass der RemotingHello-Dienst vor dem Ausführen von ProxyWiredToHttpChannel.exe bei IIS registriert wird.
Siehe auch
Verweis
IChannel
IMessage
IRemotingTypeInfo
MarshalByRefObject
OneWayAttribute
RealProxy
System.Collections
System.Runtime.Remoting
System.Runtime.Remoting.Proxies
System.Runtime.Remoting.Messaging
UnmanagedType
Konzepte
Weitere Ressourcen
Remoting für Fortgeschrittene
Objektaktivierung und Lebensdauer
Erstellungsdatum: 2010-02-13