Книга: C# для профессионалов. Том II

Удаленные объекты

Удаленные объекты

Удаленные объекты требуются для распределенного вычисления. Объект, вызываемый удаленно с другой системы, выводится из объектов System.MarshalByRefObject.MarshalByRefObject и соответствует домену приложения, в котором они создаются. Это означает, что такие объекты никогда не переходят между доменами приложений; вместо этого используется объект прокси для доступа к удаленному объекту изнутри другого домена приложения. Другой домен приложения может существовать внутри того же процесса, другого процесса, или на другой системе.

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

Класс MarshalByRefObject имеет в дополнение к унаследованным методам из класса Object методы для инициализации и получения служб времени жизни. Службы времени жизни определяют, как долго живут удаленные объекты. Службы времени жизни и арендуемые свойства будут рассмотрены позже в этой главе.

Чтобы увидеть .NET Remoting в действии, создается простая библиотека классов для удаленного объекта. Класс Hello выводится из System.MarshalByRefObject. В конструкторе и деструкторе на консоли записывается сообщение, чтобы было известно о времени жизни объекта. Кроме того, имеется только один метод Greeting(), который будет вызываться от клиента.

Для того чтобы легко различать в последующих разделах сборку и класс, дадим им различные имена аргументов, которые используют вызовы метода. Присвоим сборке имя RemoteHello.dll, а классу — Hello. Типом проекта Visual Studio.NET, используемым для этого класса, является Visual C# Class Library:

namespace Wrox.ProfessionalCSharp {
 using System;
 /// <summary>
 /// Краткое описание Class1
 /// </summary>
 public class Hello: System.MarshalByRefObject {
  public Hello() {
   Console.WriteLine("Constructor called");
  }
  ~Hello() {
   Console.WriteLine("Destructor called");
  }
  public string Greeting(string name) {
   Console.WriteLine("Greeting called");
   return "Hello, " + name;
  }
 }
}

Оглавление книги


Генерация: 1.752. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз