RemotingConfiguration.RegisterActivatedServiceType Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Registra um Type de objeto no lado do serviço como um que pode ser ativado na solicitação de um cliente.
Sobrecargas
RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Registra um tipo de objeto registrado no ActivatedServiceTypeEntry fornecido no lado do serviço como um que pode ser ativado na solicitação de um cliente. |
RegisterActivatedServiceType(Type) |
Registra um tipo de objeto especificado no lado do serviço como um tipo que pode ser ativado na solicitação de um cliente. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Registra um tipo de objeto registrado no ActivatedServiceTypeEntry fornecido no lado do serviço como um que pode ser ativado na solicitação de um cliente.
public:
static void RegisterActivatedServiceType(System::Runtime::Remoting::ActivatedServiceTypeEntry ^ entry);
public static void RegisterActivatedServiceType (System.Runtime.Remoting.ActivatedServiceTypeEntry entry);
static member RegisterActivatedServiceType : System.Runtime.Remoting.ActivatedServiceTypeEntry -> unit
Public Shared Sub RegisterActivatedServiceType (entry As ActivatedServiceTypeEntry)
Parâmetros
Definições de configuração para o tipo ativado pelo cliente.
Exceções
Pelo menos um dos chamadores no topo da pilha de chamadas não tem permissão para configurar canais e tipos de comunicação remota.
Comentários
Para criar uma instância de um objeto ativado pelo cliente no servidor, você deve saber Type dela e ela deve ser registrada na extremidade do servidor usando o RegisterActivatedServiceType método . Para obter um proxy para uma nova instância do objeto ativado pelo cliente, o cliente deve primeiro registrar um canal com ChannelServices e, em seguida, ativar o objeto chamando new
ou Activator.CreateInstance.
Para ativar um tipo de objeto ativado pelo cliente com a new
palavra-chave , primeiro você deve registrar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método . Chamar o RegisterActivatedClientType método fornece à infraestrutura de comunicação remota o local do aplicativo remoto, em new
que tenta criá-lo. Se, por outro lado, você usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deverá fornecer a URL do aplicativo remoto como um parâmetro, portanto, nenhum registro anterior na extremidade do cliente será necessário. Para fornecer o CreateInstance método com a URL do servidor em que você deseja criar o objeto, você deve encapsular a URL em uma instância da UrlAttribute classe .
Para obter uma descrição detalhada dos objetos ativados pelo cliente, consulte Ativação do cliente.
Confira também
Aplica-se a
RegisterActivatedServiceType(Type)
Registra um tipo de objeto especificado no lado do serviço como um tipo que pode ser ativado na solicitação de um cliente.
public:
static void RegisterActivatedServiceType(Type ^ type);
public static void RegisterActivatedServiceType (Type type);
static member RegisterActivatedServiceType : Type -> unit
Public Shared Sub RegisterActivatedServiceType (type As Type)
Parâmetros
Exceções
Pelo menos um dos chamadores no topo da pilha de chamadas não tem permissão para configurar canais e tipos de comunicação remota.
Exemplos
O exemplo de código a seguir demonstra o registro de um tipo de objeto no servidor como um tipo que pode ser ativado pelo cliente. Para o código do cliente que corresponde ao código do servidor apresentado, consulte o exemplo do RegisterActivatedClientType método .
#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( 8082 ) );
RemotingConfiguration::RegisterActivatedServiceType( HelloServiceClass::typeid );
Console::WriteLine( "Press enter to stop this process." );
Console::ReadLine();
return 0;
}
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Tcp;
public class ServerClass {
public static void Main() {
ChannelServices.RegisterChannel(new TcpChannel(8082));
RemotingConfiguration.RegisterActivatedServiceType(typeof(HelloServiceClass));
Console.WriteLine("Press enter to stop this process.");
Console.ReadLine();
}
}
Imports System.Runtime.Remoting
Imports System.Runtime.Remoting.Channels
Imports System.Runtime.Remoting.Channels.Tcp
Public Class ServerClass
Public Shared Sub Main()
ChannelServices.RegisterChannel(New TcpChannel(8082))
RemotingConfiguration.RegisterActivatedServiceType(GetType(HelloServiceClass))
Console.WriteLine("Press enter to stop this process.")
Console.ReadLine()
End Sub
End Class
O exemplo de código a seguir mostra o objeto de serviço registrado no código de exemplo acima.
#using <system.dll>
using namespace System;
public ref class HelloServiceClass: public MarshalByRefObject
{
private:
static int n_instance;
public:
HelloServiceClass()
{
n_instance++;
Console::WriteLine( "{0} has been created. Instance # = {1}", this->GetType()->Name, n_instance );
}
~HelloServiceClass()
{
Console::WriteLine( "Destroyed instance {0} of HelloServiceClass.", n_instance );
n_instance--;
}
String^ HelloMethod( String^ name )
{
// Reports that the method was called.
Console::WriteLine();
Console::WriteLine( "Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name );
// Calculates and returns the result to the client.
return String::Format( "Hi there {0}", name );
}
};
using System;
public class HelloServiceClass : MarshalByRefObject {
static int n_instance;
public HelloServiceClass() {
n_instance++;
Console.WriteLine(this.GetType().Name + " has been created. Instance # = {0}", n_instance);
}
~HelloServiceClass() {
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance);
n_instance --;
}
public String HelloMethod(String name) {
// Reports that the method was called.
Console.WriteLine();
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.",
n_instance, name);
// Calculates and returns the result to the client.
return "Hi there " + name + ".";
}
}
Public Class HelloServiceClass
Inherits MarshalByRefObject
Private Shared n_instance As Integer
Public Sub New()
n_instance += 1
Console.WriteLine(Me.GetType().Name + " has been created. Instance # = {0}", n_instance)
End Sub
Protected Overrides Sub Finalize()
Console.WriteLine("Destroyed instance {0} of HelloServiceClass.", n_instance)
n_instance -= 1
MyBase.Finalize()
End Sub
Public Function HelloMethod(name As [String]) As [String]
' Reports that the method was called.
Console.WriteLine()
Console.WriteLine("Called HelloMethod on instance {0} with the '{1}' parameter.", n_instance, name)
' Calculates and returns the result to the client.
Return "Hi there " + name + "."
End Function 'HelloMethod
End Class
Comentários
Para criar uma instância de um objeto ativado pelo cliente no servidor, você deve saber Type dela e ela deve ser registrada na extremidade do servidor usando o RegisterActivatedServiceType método . Para obter um proxy para uma nova instância do objeto ativado pelo cliente, o cliente deve primeiro registrar um canal com ChannelServices e, em seguida, ativar o objeto chamando new
ou Activator.CreateInstance.
Para ativar um tipo de objeto ativado pelo cliente com a new
palavra-chave , primeiro você deve registrar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método . Chamar o RegisterActivatedClientType método fornece à infraestrutura de comunicação remota o local do aplicativo remoto, em new
que tenta criá-lo. Se, por outro lado, você usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deverá fornecer a URL do aplicativo remoto como um parâmetro, portanto, nenhum registro anterior na extremidade do cliente será necessário. Para fornecer o CreateInstance método com a URL do servidor em que você deseja criar o objeto, você deve encapsular a URL em uma instância da UrlAttribute classe .
Para obter uma descrição detalhada dos objetos ativados pelo cliente, consulte Ativação do cliente.