Freigeben über


WellKnownClientTypeEntry-Klasse

Enthält Werte für einen Objekttyp, der beim Client als vom Server aktivierter Typ (Einzelaufruf oder Singleton) registriert ist.

Namespace: System.Runtime.Remoting
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
<ComVisibleAttribute(True)> _
Public Class WellKnownClientTypeEntry
    Inherits TypeEntry
'Usage
Dim instance As WellKnownClientTypeEntry
[ComVisibleAttribute(true)] 
public class WellKnownClientTypeEntry : TypeEntry
[ComVisibleAttribute(true)] 
public ref class WellKnownClientTypeEntry : public TypeEntry
/** @attribute ComVisibleAttribute(true) */ 
public class WellKnownClientTypeEntry extends TypeEntry
ComVisibleAttribute(true) 
public class WellKnownClientTypeEntry extends TypeEntry

Hinweise

Vom Server aktivierte Typen können entweder Einzelaufruf oder Singleton sein. Wenn eine Klasse als Einzelaufruftyp registriert ist, wird bei jedem Aufruf seitens des Clients eine neue Instanz erstellt. Alle Aufrufe eines Singleton-Objekts werden von einer Instanz dieses Objekts behandelt, es sei denn, das Objekt wurde schon erfasst.

Jeder Client, der den URI eines registrierten vom Server aktivierten Objekts kennt, kann einen Proxy für dieses Objekt abrufen, indem der bevorzugte Channel mit ChannelServices registriert und das Objekt durch einen Aufruf von new oder Activator.GetObject aktiviert wird. Wenn Sie mit new ein vom Server aktiviertes Objekt aktivieren möchten, müssen Sie zuerst den vom Server aktivierten Objekttyp unter Verwendung der RegisterWellKnownClientType-Methode auf dem Client registrieren. Durch Aufruf von RegisterWellKnownClientType geben Sie der Remotinginfrastruktur den Speicherort des Remoteobjekts an, wodurch es mit dem Schlüsselwort new erstellt werden kann. Wenn Sie hingegen ein vom Server aktiviertes Objekt unter Verwendung der Activator.GetObject-Methode aktivieren, müssen Sie den URL des Objekts als Argument angeben. Somit ist keine vorherige Registrierung auf dem Client erforderlich.

Eine detaillierte Beschreibung vom Server aktivierter Objekte und der Aktivierung von Remoteobjekten finden Sie unter Aktivierung von Remoteobjekten.

Beispiel

Imports System
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Http

Public Class MyClient
   
   Public Shared Sub Main()
      ' Create a 'HttpChannel' object and  register with channel services.
      ChannelServices.RegisterChannel(New HttpChannel())
      Console.WriteLine(" Start calling from Client One.......")
      Dim myWellKnownClientTypeEntry As New WellKnownClientTypeEntry(GetType(HelloServer), _ 
                                                  "https://localhost:8086/SayHello")
      myWellKnownClientTypeEntry.ApplicationUrl = "https://localhost:8086/SayHello"
      RemotingConfiguration.RegisterWellKnownClientType(myWellKnownClientTypeEntry)
      ' Get the proxy object for the remote object.
      Dim myHelloServerObject As New HelloServer()
      ' Retrieve an array of object types registered on the 
      ' client end as well-known types.
      Dim myWellKnownClientTypeEntryCollection As WellKnownClientTypeEntry() = _ 
                                       RemotingConfiguration.GetRegisteredWellKnownClientTypes()
      Console.WriteLine("The Application Url to activate the Remote Object :" + _ 
                                           myWellKnownClientTypeEntryCollection(0).ApplicationUrl)
      Console.WriteLine("The 'WellKnownClientTypeEntry' object :" + _ 
                                              myWellKnownClientTypeEntryCollection(0).ToString())
      ' Make remote method calls.
      Dim i As Integer
      For i = 0 To 4
         Console.WriteLine(myHelloServerObject.HelloMethod(" Client One"))
      Next i
   End Sub 'Main
End Class 'MyClient 
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;

public class MyClient 
{
   public static void Main()
   {
   // Create a 'HttpChannel' object and  register with channel services.
   ChannelServices.RegisterChannel(new HttpChannel());
   Console.WriteLine(" Start calling from Client One.......");
   WellKnownClientTypeEntry myWellKnownClientTypeEntry = 
                  new WellKnownClientTypeEntry(typeof(HelloServer),
                                  "https://localhost:8086/SayHello");
   myWellKnownClientTypeEntry.ApplicationUrl="https://localhost:8086/SayHello";
   RemotingConfiguration.RegisterWellKnownClientType(myWellKnownClientTypeEntry);
   // Get the proxy object for the remote object.
   HelloServer myHelloServerObject = new HelloServer();
   // Retrieve an array of object types registered on the 
   // client end as well-known types.
   WellKnownClientTypeEntry [] myWellKnownClientTypeEntryCollection = 
          RemotingConfiguration.GetRegisteredWellKnownClientTypes();
   Console.WriteLine("The Application Url to activate the Remote Object :"
        +myWellKnownClientTypeEntryCollection[0].ApplicationUrl);
   Console.WriteLine("The 'WellKnownClientTypeEntry' object :"
            +myWellKnownClientTypeEntryCollection[0].ToString());
   // Make remote method calls.
   for (int i = 0; i < 5; i++)
         Console.WriteLine(myHelloServerObject.HelloMethod(" Client One"));
   }
}
#using <System.Runtime.Remoting.dll>
#using <System.dll>
#using <WellKnownClientTypeEntry_Share.dll>

using namespace System;
using namespace System::Runtime::Remoting;
using namespace System::Runtime::Remoting::Channels;
using namespace System::Runtime::Remoting::Channels::Http;

int main()
{
   // Create a 'HttpChannel' object and  register with channel services.
   ChannelServices::RegisterChannel( gcnew HttpChannel );
   Console::WriteLine( " Start calling from Client One......." );
   WellKnownClientTypeEntry^ myWellKnownClientTypeEntry = gcnew WellKnownClientTypeEntry( HelloServer::typeid,"https://localhost:8086/SayHello" );
   myWellKnownClientTypeEntry->ApplicationUrl = "https://localhost:8086/SayHello";
   RemotingConfiguration::RegisterWellKnownClientType( myWellKnownClientTypeEntry );

   // Get the proxy object for the remote object.
   HelloServer^ myHelloServerObject = gcnew HelloServer;

   // Retrieve an array of object types registered on the 
   // client end as well-known types.
   array<WellKnownClientTypeEntry^>^myWellKnownClientTypeEntryCollection = RemotingConfiguration::GetRegisteredWellKnownClientTypes();
   Console::WriteLine( "The Application Url to activate the Remote Object :{0}", myWellKnownClientTypeEntryCollection[ 0 ]->ApplicationUrl );
   Console::WriteLine( "The 'WellKnownClientTypeEntry' object :{0}", myWellKnownClientTypeEntryCollection[ 0 ] );

   // Make remote method calls.
   for ( int i = 0; i < 5; i++ )
      Console::WriteLine( myHelloServerObject->HelloMethod( " Client One" ) );
}
import System.*;
import System.Runtime.Remoting.*;
import System.Runtime.Remoting.Channels.*;
import System.Runtime.Remoting.Channels.Http.*;

public class MyClient
{
    public static void main(String[] args)
    {
        // Create a 'HttpChannel' object and  register with channel services.
        ChannelServices.RegisterChannel(new HttpChannel());
        Console.WriteLine(" Start calling from Client One.......");
        WellKnownClientTypeEntry myWellKnownClientTypeEntry = 
            new WellKnownClientTypeEntry(HelloServer.class.ToType(),
            "https://localhost:8086/SayHello");
        myWellKnownClientTypeEntry.
            set_ApplicationUrl("https://localhost:8086/SayHello");
        RemotingConfiguration.RegisterWellKnownClientType(
            myWellKnownClientTypeEntry);
        // Get the proxy object for the remote object.
        HelloServer myHelloServerObject = new HelloServer();
        // Retrieve an array of object types registered on the 
        // client end as well-known types.
        WellKnownClientTypeEntry myWellKnownClientTypeEntryCollection[] =
            RemotingConfiguration.GetRegisteredWellKnownClientTypes();
        Console.WriteLine("The Application Url to activate the Remote Object :" 
            + myWellKnownClientTypeEntryCollection[0].get_ApplicationUrl());
        Console.WriteLine("The 'WellKnownClientTypeEntry' object :" 
            + myWellKnownClientTypeEntryCollection.get_Item(0).ToString());
        // Make remote method calls.
        for (int i = 0; i < 5; i++) {
            Console.WriteLine(myHelloServerObject.HelloMethod(" Client One"));
        }
    } //main
} //MyClient

Vererbungshierarchie

System.Object
   System.Runtime.Remoting.TypeEntry
    System.Runtime.Remoting.WellKnownClientTypeEntry

Threadsicherheit

Alle öffentlichen statischen (Shared in Visual Basic) Member dieses Typs sind threadsicher. Bei Instanzmembern ist die Threadsicherheit nicht gewährleistet.

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

WellKnownClientTypeEntry-Member
System.Runtime.Remoting-Namespace
RegisterWellKnownClientType

Weitere Ressourcen

Serveraktivierung