Udostępnij za pośrednictwem


RemotingConfiguration.RegisterActivatedClientType Metoda

Definicja

Rejestruje obiekt Type na końcu klienta jako typ, który można aktywować na serwerze.

Przeciążenia

Nazwa Opis
RegisterActivatedClientType(ActivatedClientTypeEntry)

Rejestruje obiekt Type zarejestrowany w podanym ActivatedClientTypeEntry na końcu klienta jako typ, który można aktywować na serwerze.

RegisterActivatedClientType(Type, String)

Rejestruje obiekt Type na końcu klienta jako typ, który można aktywować na serwerze, przy użyciu podanych parametrów w celu zainicjowania nowego wystąpienia ActivatedClientTypeEntry klasy.

RegisterActivatedClientType(ActivatedClientTypeEntry)

Rejestruje obiekt Type zarejestrowany w podanym ActivatedClientTypeEntry na końcu klienta jako typ, który można aktywować na serwerze.

public:
 static void RegisterActivatedClientType(System::Runtime::Remoting::ActivatedClientTypeEntry ^ entry);
public static void RegisterActivatedClientType(System.Runtime.Remoting.ActivatedClientTypeEntry entry);
static member RegisterActivatedClientType : System.Runtime.Remoting.ActivatedClientTypeEntry -> unit
Public Shared Sub RegisterActivatedClientType (entry As ActivatedClientTypeEntry)

Parametry

entry
ActivatedClientTypeEntry

Ustawienia konfiguracji typu aktywowanego przez klienta.

Wyjątki

Co najmniej jeden z wywołujących wyżej w stosie wywołań nie ma uprawnień do konfigurowania typów i kanałów komunikacji telefonicznej.

Uwagi

Aby utworzyć wystąpienie obiektu aktywowanego przez klienta na serwerze, musisz go znać Type i musi zostać zarejestrowany na końcu serwera przy użyciu RegisterActivatedServiceType metody . Aby uzyskać serwer proxy dla nowego wystąpienia obiektu aktywowanego przez klienta, klient musi najpierw zarejestrować kanał za pomocą polecenia ChannelServices , a następnie aktywować obiekt przez wywołanie metody new.

Aby aktywować typ obiektu aktywowanego przez klienta za pomocą słowa kluczowego new , należy najpierw zarejestrować typ obiektu na końcu klienta przy użyciu RegisterActivatedClientType metody . RegisterActivatedClientType Wywołanie metody daje infrastrukturze komunikacji zdalnej lokalizację aplikacji zdalnej, w której new próbuje ją utworzyć. Jeśli z drugiej strony użyjesz Activator.CreateInstance metody w celu utworzenia nowego wystąpienia obiektu aktywowanego przez klienta, musisz podać adres URL aplikacji zdalnej jako parametr, więc nie jest wymagana wcześniejsza rejestracja na końcu klienta. Aby podać metodę Activator.CreateInstance przy użyciu adresu URL serwera, na którym chcesz utworzyć obiekt, należy hermetyzować adres URL w wystąpieniu UrlAttribute klasy.

Zobacz też

Dotyczy

RegisterActivatedClientType(Type, String)

Rejestruje obiekt Type na końcu klienta jako typ, który można aktywować na serwerze, przy użyciu podanych parametrów w celu zainicjowania nowego wystąpienia ActivatedClientTypeEntry klasy.

public:
 static void RegisterActivatedClientType(Type ^ type, System::String ^ appUrl);
public static void RegisterActivatedClientType(Type type, string appUrl);
static member RegisterActivatedClientType : Type * string -> unit
Public Shared Sub RegisterActivatedClientType (type As Type, appUrl As String)

Parametry

type
Type

Obiekt Type.

appUrl
String

Adres URL aplikacji, w której jest aktywowany ten typ.

Wyjątki

Parametr type or appUrl to null.

Co najmniej jeden z wywołujących wyżej w stosie wywołań nie ma uprawnień do konfigurowania typów i kanałów komunikacji telefonicznej.

Przykłady

W poniższym przykładzie kodu pokazano rejestrację typu obiektu na końcu klienta jako typ, który można aktywować na serwerze. Aby uzyskać kod serwera odpowiadający przedstawionemu kodowi klienta, zobacz przykład RegisterActivatedServiceType metody .

#using <system.dll>
#using <system.runtime.remoting.dll>
#using "service.dll"

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

int main()
{
   ChannelServices::RegisterChannel( gcnew TcpChannel );
   RemotingConfiguration::RegisterActivatedClientType( HelloServiceClass::typeid, "tcp://localhost:8082" );
   try
   {
      HelloServiceClass ^ service = gcnew HelloServiceClass;

      // Calls the remote method.
      Console::WriteLine();
      Console::WriteLine( "Calling remote Object" );
      Console::WriteLine( service->HelloMethod( "Caveman" ) );
      Console::WriteLine( service->HelloMethod( "Spaceman" ) );
      Console::WriteLine( service->HelloMethod( "Client Man" ) );
      Console::WriteLine( "Finished remote Object call" );
    }
    catch (Exception ex)
    {
        Console::WriteLine("An exception occurred: " + ex.Message);
    }
   Console::WriteLine();
   return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;

public class ClientClass {

    public static void Main() {

        ChannelServices.RegisterChannel(new TcpChannel());

        RemotingConfiguration.RegisterActivatedClientType(typeof(HelloServiceClass),
                                                   "tcp://localhost:8082");

        try
        {
            HelloServiceClass service = new HelloServiceClass();

           // Calls the remote method.
           Console.WriteLine();
           Console.WriteLine("Calling remote object");
           Console.WriteLine(service.HelloMethod("Caveman"));
           Console.WriteLine(service.HelloMethod("Spaceman"));
           Console.WriteLine(service.HelloMethod("Client Man"));
           Console.WriteLine("Finished remote object call");
           Console.WriteLine();
        }
    catch (Exception ex)
    {
       Console.WriteLine("An exception occurred: " + ex.Message);
        }
    }
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp


Public Class ClientClass
   
   Public Shared Sub Main()
      
      ChannelServices.RegisterChannel(New TcpChannel())
      
      RemotingConfiguration.RegisterActivatedClientType(GetType(HelloServiceClass), "tcp://localhost:8082")
      
      Try
          Dim service As New HelloServiceClass()
      
       
          ' Calls the remote method.
          Console.WriteLine()
          Console.WriteLine("Calling remote object")
          Console.WriteLine(service.HelloMethod("Caveman"))
          Console.WriteLine(service.HelloMethod("Spaceman"))
          Console.WriteLine(service.HelloMethod("Client Man"))
          Console.WriteLine("Finished remote object call")
      Catch ex as Exception
          Console.WriteLine("An exception occurred: " + ex.Message)
      End Try

      Console.WriteLine()

   End Sub

End Class

Uwagi

Aby utworzyć wystąpienie obiektu aktywowanego przez klienta na serwerze, musisz go znać Type i musi zostać zarejestrowany na końcu serwera przy użyciu RegisterActivatedServiceType metody . Aby uzyskać serwer proxy dla nowego wystąpienia obiektu aktywowanego przez klienta, klient musi najpierw zarejestrować kanał za pomocą polecenia ChannelServices , a następnie aktywować obiekt przez wywołanie metody new.

Aby aktywować typ obiektu aktywowanego przez klienta za pomocą słowa kluczowego new , należy najpierw zarejestrować typ obiektu na końcu klienta przy użyciu RegisterActivatedClientType metody . RegisterActivatedClientType Wywołanie metody daje infrastrukturze komunikacji zdalnej lokalizację aplikacji zdalnej, w której new próbuje ją utworzyć. Jeśli z drugiej strony użyjesz Activator.CreateInstance metody w celu utworzenia nowego wystąpienia obiektu aktywowanego przez klienta, musisz podać adres URL aplikacji zdalnej jako parametr, więc nie jest wymagana wcześniejsza rejestracja na końcu klienta. Aby podać metodę Activator.CreateInstance przy użyciu adresu URL serwera, na którym chcesz utworzyć obiekt, należy hermetyzować adres URL w wystąpieniu UrlAttribute klasy.

Zobacz też

Dotyczy