RemotingConfiguration.RegisterActivatedClientType Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Регистрирует объект Type со стороны клиента в качестве типа, который может активироваться сервером.
Перегрузки
RegisterActivatedClientType(ActivatedClientTypeEntry) |
Регистрирует объект Type, записанный в предоставленный ActivatedClientTypeEntry на стороне клиента в качестве типа, который может быть активирован сервером. |
RegisterActivatedClientType(Type, String) |
Регистрирует объект Type со стороны клиента в качестве типа, который может активироваться сервером, используя данные параметры для инициализации нового экземпляра класса ActivatedClientTypeEntry. |
RegisterActivatedClientType(ActivatedClientTypeEntry)
Регистрирует объект Type, записанный в предоставленный ActivatedClientTypeEntry на стороне клиента в качестве типа, который может быть активирован сервером.
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)
Параметры
- entry
- ActivatedClientTypeEntry
Параметры конфигурации для активированного клиентом типа.
Исключения
По крайней мере у одного из вызывающих операторов, находящихся в верхней части стека вызовов, отсутствует разрешение на настройку типов и каналов удаленного взаимодействия.
Комментарии
Чтобы создать экземпляр объекта, активированного клиентом, на сервере необходимо знать его Type и зарегистрировать на сервере с помощью RegisterActivatedServiceType метода . Чтобы получить прокси-сервер для нового экземпляра активируемого клиентом объекта, клиент должен сначала зарегистрировать канал в ChannelServices , а затем активировать объект, вызвав .new
Чтобы активировать тип объекта, активируемый клиентом, с помощью ключевого new
слова , необходимо сначала зарегистрировать тип объекта на стороне RegisterActivatedClientType клиента с помощью метода .
RegisterActivatedClientType Вызов метода предоставляет инфраструктуре удаленного взаимодействия расположение удаленного приложения, в котором new
пытается создать его. С другой стороны, если вы используете Activator.CreateInstance метод для создания нового экземпляра объекта, активируемого клиентом, необходимо указать URL-адрес удаленного приложения в качестве параметра, поэтому предварительная регистрация на стороне клиента не требуется. Чтобы предоставить Activator.CreateInstance методу URL-адрес сервера, на котором вы хотите создать объект, необходимо инкапсулировать URL-адрес в экземпляре UrlAttribute класса .
Подробное описание активируемых клиентом объектов см. в разделе Активация клиента.
См. также раздел
Применяется к
RegisterActivatedClientType(Type, String)
Регистрирует объект Type со стороны клиента в качестве типа, который может активироваться сервером, используя данные параметры для инициализации нового экземпляра класса ActivatedClientTypeEntry.
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)
Параметры
- appUrl
- String
URL-адрес приложения, где активируется этот тип.
Исключения
Значение параметра typeName
или параметра URI
— null
.
По крайней мере у одного из вызывающих операторов, находящихся в верхней части стека вызовов, отсутствует разрешение на настройку типов и каналов удаленного взаимодействия.
Примеры
В следующем примере кода показана регистрация типа объекта на стороне клиента в качестве типа, который можно активировать на сервере. Код сервера, соответствующий представленному клиентскому коду, см. в примере для RegisterActivatedServiceType метода .
#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
Комментарии
Чтобы создать экземпляр объекта, активированного клиентом, на сервере необходимо знать его Type и зарегистрировать на сервере с помощью RegisterActivatedServiceType метода . Чтобы получить прокси-сервер для нового экземпляра активируемого клиентом объекта, клиент должен сначала зарегистрировать канал в ChannelServices , а затем активировать объект, вызвав .new
Чтобы активировать тип объекта, активируемый клиентом, с помощью ключевого new
слова , необходимо сначала зарегистрировать тип объекта на стороне RegisterActivatedClientType клиента с помощью метода .
RegisterActivatedClientType Вызов метода предоставляет инфраструктуре удаленного взаимодействия расположение удаленного приложения, в котором new
пытается создать его. С другой стороны, если вы используете Activator.CreateInstance метод для создания нового экземпляра объекта, активируемого клиентом, необходимо указать URL-адрес удаленного приложения в качестве параметра, поэтому предварительная регистрация на стороне клиента не требуется. Чтобы предоставить Activator.CreateInstance методу URL-адрес сервера, на котором вы хотите создать объект, необходимо инкапсулировать URL-адрес в экземпляре UrlAttribute класса .
Подробное описание активируемых клиентом объектов см. в разделе Активация клиента.