Condividi tramite


WellKnownClientTypeEntry Classe

Definizione

Contiene i valori per un tipo di oggetto registrato sul client come tipo attivato dal server (a chiamata singola o Singleton).

public ref class WellKnownClientTypeEntry : System::Runtime::Remoting::TypeEntry
public class WellKnownClientTypeEntry : System.Runtime.Remoting.TypeEntry
[System.Runtime.InteropServices.ComVisible(true)]
public class WellKnownClientTypeEntry : System.Runtime.Remoting.TypeEntry
type WellKnownClientTypeEntry = class
    inherit TypeEntry
[<System.Runtime.InteropServices.ComVisible(true)>]
type WellKnownClientTypeEntry = class
    inherit TypeEntry
Public Class WellKnownClientTypeEntry
Inherits TypeEntry
Ereditarietà
WellKnownClientTypeEntry
Attributi

Esempio

#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,"http://localhost:8086/SayHello" );
   myWellKnownClientTypeEntry->ApplicationUrl = "http://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" ) );
}
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),
                                  "http://localhost:8086/SayHello");
   myWellKnownClientTypeEntry.ApplicationUrl="http://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"));
   }
}
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), _ 
                                                  "http://localhost:8086/SayHello")
      myWellKnownClientTypeEntry.ApplicationUrl = "http://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
End Class

Commenti

I tipi attivati dal server possono essere una singola chiamata o singleton. Se una classe viene registrata come tipo di chiamata singola, viene creata una nuova istanza ogni volta che arriva una chiamata dal client. Tutte le chiamate a un oggetto singleton vengono gestite da un'istanza di tale oggetto, a meno che tale oggetto non sia stato raccolto.

Qualsiasi client che conosce l'URI di un oggetto attivato dal server registrato può ottenere un proxy per questo oggetto registrando il canale che preferisce con ChannelServices e attivando l'oggetto chiamando new o Activator.GetObject. Per attivare un oggetto attivato dal server con new, è innanzitutto necessario registrare il tipo di oggetto attivato dal server nel client usando il RegisterWellKnownClientType metodo . RegisterWellKnownClientTypeChiamando , si assegna all'infrastruttura remota la posizione dell'oggetto remoto, che consente alla new parola chiave di crearla. Se invece si usa il Activator.GetObject metodo per attivare un oggetto attivato dal server, è necessario specificarlo con l'URL dell'oggetto come argomento, quindi non è necessaria alcuna registrazione precedente nel client.

Per una descrizione dettagliata degli oggetti attivati dal server e dell'attivazione di oggetti remoti, vedere Attivazione di oggetti remoti.

Costruttori

WellKnownClientTypeEntry(String, String, String)

Inizializza una nuova istanza della classe WellKnownClientTypeEntry con il tipo, il nome dell'assembly e l'URL specificati.

WellKnownClientTypeEntry(Type, String)

Inizializza una nuova istanza della classe WellKnownClientTypeEntry con il tipo e l'URL specificati.

Proprietà

ApplicationUrl

Ottiene o imposta l'URL dell'applicazione in cui attivare il tipo.

AssemblyName

Ottiene il nome dell'assembly del tipo di oggetto configurato per essere un tipo ad attivazione remota.

(Ereditato da TypeEntry)
ObjectType

Ottiene l'oggetto Type del tipo di client attivato dal server.

ObjectUrl

Ottiene l'URL dell'oggetto del client attivato dal server.

TypeName

Ottiene il nome completo del tipo di oggetto configurato per essere un tipo ad attivazione remota.

(Ereditato da TypeEntry)

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce il nome completo del tipo, il nome dell'assembly e l'URL del tipo di client attivato dal server come oggetto String.

Si applica a

Vedi anche