Поделиться через


WellKnownClientTypeEntry Класс

Определение

Содержит значения для типа объектов, зарегистрированного на стороне клиента в качестве типа, активированного сервером (единственного вызова или одноэлементного множества).

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
Наследование
WellKnownClientTypeEntry
Атрибуты

Примеры

#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

Комментарии

Типы, активируемые сервером, могут быть либо одним вызовом, либо одноэлементным. Если класс зарегистрирован как один тип вызова, при каждом поступлении вызова от клиента создается новый экземпляр. Все вызовы одноэлементного объекта обрабатываются одним экземпляром этого объекта, если только этот объект не был собран.

Любой клиент, который знает универсальный код ресурса (URI) зарегистрированного объекта, активированного сервером, может получить прокси-сервер для этого объекта, зарегистрировав в нем предпочитаемый канал ChannelServices и активировав объект путем вызова new или Activator.GetObject. Чтобы активировать объект new, активированный сервером, с помощью необходимо сначала зарегистрировать тип объекта, активированный сервером, на клиенте RegisterWellKnownClientType с помощью метода . RegisterWellKnownClientTypeВызывая , вы предоставляете инфраструктуре удаленного взаимодействия расположение удаленного объекта, что позволяет ключевому слову new создать его. С другой стороны, если вы используете Activator.GetObject метод для активации объекта, активированного сервером, необходимо указать ему URL-адрес объекта в качестве аргумента, поэтому предварительная регистрация на клиенте не требуется.

Подробное описание активируемых сервером объектов и активации удаленных объектов см. в разделе Активация удаленных объектов.

Конструкторы

WellKnownClientTypeEntry(String, String, String)

Инициализирует новый экземпляр класса WellKnownClientTypeEntry с заданным типом, именем сборки и URL-адресом.

WellKnownClientTypeEntry(Type, String)

Инициализирует новый экземпляр класса WellKnownClientTypeEntry с заданным типом и URL-адресом.

Свойства

ApplicationUrl

Возвращает или задает URL-адрес приложения, в котором активируется тип.

AssemblyName

Получает имя сборки типа объекта, сконфигурированного для работы в качестве типа удаленной активации.

(Унаследовано от TypeEntry)
ObjectType

Возвращает Type тип клиента, активированный сервером.

ObjectUrl

Возвращает адрес URL объекта клиента, активированного сервером.

TypeName

Получает полное имя сборки типа объекта, сконфигурированного для работы в качестве типа удаленной активации.

(Унаследовано от TypeEntry)

Методы

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает полное имя типа, сборки и адрес URL объекта типа клиента, активированного сервером, в качестве String.

Применяется к

См. также раздел