RemotingConfiguration.RegisterActivatedServiceType Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Regista um objeto Type no lado do serviço como um que pode ser ativado mediante pedido de um cliente.
Sobrecargas
| Name | Description |
|---|---|
| RegisterActivatedServiceType(ActivatedServiceTypeEntry) |
Regista um tipo de objeto registado no lado fornecido ActivatedServiceTypeEntry no lado do serviço como um que pode ser ativado mediante pedido de um cliente. |
| RegisterActivatedServiceType(Type) |
Regista um tipo de objeto especificado na extremidade do serviço como um tipo que pode ser ativado mediante pedido de um cliente. |
RegisterActivatedServiceType(ActivatedServiceTypeEntry)
Regista um tipo de objeto registado no lado fornecido ActivatedServiceTypeEntry no lado do serviço como um que pode ser ativado mediante pedido 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 mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.
Observações
Para criar uma instância de um objeto ativado pelo cliente no servidor, deve saber o que Type é e deve ser registado no lado 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 registar um canal com ChannelServices e depois ativar o objeto chamando new ou Activator.CreateInstance.
Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave, deve primeiro registar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método. Chamar o RegisterActivatedClientType método dá à infraestrutura remota a localização da aplicação remota, onde new tenta criá-la. Se, por outro lado, usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deve fornecer a URL da aplicação remota como parâmetro, pelo que não é necessário registo prévio do lado do cliente. Para fornecer ao CreateInstance método a URL do servidor onde pretende criar o objeto, deve encapsular a URL numa instância da UrlAttribute classe.
Para uma descrição detalhada dos objetos ativados pelo cliente, veja Ativação do Cliente.
Ver também
Aplica-se a
RegisterActivatedServiceType(Type)
Regista um tipo de objeto especificado na extremidade do serviço como um tipo que pode ser ativado mediante pedido 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 mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.
Exemplos
O exemplo de código seguinte demonstra o registo 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, veja 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 seguinte exemplo de código mostra o objeto de serviço registado 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
Observações
Para criar uma instância de um objeto ativado pelo cliente no servidor, deve saber o que Type é e deve ser registado no lado 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 registar um canal com ChannelServices e depois ativar o objeto chamando new ou Activator.CreateInstance.
Para ativar um tipo de objeto ativado pelo cliente com a new palavra-chave, deve primeiro registar o tipo de objeto na extremidade do cliente usando o RegisterActivatedClientType método. Chamar o RegisterActivatedClientType método dá à infraestrutura remota a localização da aplicação remota, onde new tenta criá-la. Se, por outro lado, usar o CreateInstance método para criar uma nova instância do objeto ativado pelo cliente, deve fornecer a URL da aplicação remota como parâmetro, pelo que não é necessário registo prévio do lado do cliente. Para fornecer ao CreateInstance método a URL do servidor onde pretende criar o objeto, deve encapsular a URL numa instância da UrlAttribute classe.
Para uma descrição detalhada dos objetos ativados pelo cliente, veja Ativação do Cliente.