Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПвИ / Конспект лекций.doc
Скачиваний:
224
Добавлен:
01.06.2015
Размер:
1.05 Mб
Скачать

Пример кода для простого серверного объекта .Net Remoting

using System;

using System.Runtime.Remoting;

namespace myRemoteService

{

// Общеизвестный объект Web-сервиса

public class myRemoteObject : MarshalByRefObject

{

// Метод myRemoteMethod

public String myRemoteMethod(String s)

{

return "Hello World";

}

}

}

Пример клиентского кода для доступа к этому объекту

using System;

using System.Runtime.Remoting;

using System.Runtime.Remoting.Channels;

using System.Runtime.Remoting.Channels.Http;

using myRemoteService;

public class Client

{

public static int Main(string[] args)

{

ChannelServices.RegisterChannel(new HttpChannel());

// Создаем экземпляр класса myRemoteObject

myRemoteObject myObj = ( myRemoteObject)Activator.GetObject(typeof(myRemoteObject),

"http://myHost:7021/host/myRemoteObject.soap");

myObj. myRemoteMethod ("Hello World");

return 0;

}

}

Срок жизни, определяемый арендой

Для объектов, ссылки на которые передаются в другие приложения, создается так называемая аренда (lease). Она характеризуется сроком аренды (lease time); когда он истекает, объект отключается от инфраструктуры .NET Remoting. После освобождения в AppDomain всех ссылок на объект последний уничтожается во время следующего цикла сбора мусора. Таким образом, срок жизни объекта определяется арендой.

Для объектов устанавливается срок аренды по умолчанию, но его можно увеличить несколькими способами (чтобы объекты продолжали существовать, если клиенту нужно хранить информацию о состоянии в одном и том же серверном объекте).

  1. Серверный объект может установить неограниченное время аренды, что указывает Remoting на то, что объект не уничтожается при сборе мусора.

  2. Клиент может вызвать метод RemotingServices.GetLifetimeService и выяснить срок аренды серверного объекта, возвращаемый диспетчером аренды, который принадлежит AppDomain. Получив объект Lease, клиент может вызвать метод Lease.Renew, чтобы увеличить срок аренды.

Клиент может зарегистрировать спонсора в диспетчере аренды своего AppDomain для получения определенной аренды. Когда срок аренды удаленного объекта истекает, диспетчер аренды обращается к спонсору с запросом, нужно ли возобновлять аренду. Размещение объектов .NET Remoting

Объекты .NET Remoting могут размещаться следующим образом.

  1. В управляемом исполняемом файле Объекты .NET Remoting могут размещаться в обычном .NET EXE-файле или в управляемой службе.

  2. В IIS Объекты, поддерживающие удаленное взаимодействие (Remoting objects), могут размещаться в Internet Information Server (IIS). По умолчанию такие объекты принимают сообщения по HTTP-каналу. Для размещения объектов с поддержкой удаленного взаимодействия в IIS нужно создать виртуальный корень и скопировать в него файл remoting.config. Исполняемый файл или DLL с удаленным объектом следует поместить в подкаталог bin каталога, на который указывает корень IIS. Важно заметить, что имя корневого каталога IIS должно совпадать с со значением элемента <application name>, указанным в файлах конфигурации. Файл конфигурации Remoting загружается автоматически, когда приложение получает первое сообщение. При таком размещении объекты .NET Remoting могут использоваться как Web-сервисы.

Пример файла Remoting.cfg:

<configuration>

<system.runtime.remoting>

<application name="RemotingHello">

<service>

<wellknown mode="SingleCall"

type="Hello.HelloService, Hello"

objectUri="HelloService.soap" />

</service>

<channels>

<channel port="8000"

type="System.Runtime.Remoting.Channels.Http.HttpChannel,

System.Runtime.Remoting" />

</channels>

</application>

</system.runtime.remoting>

</configuration>

  1. В службах .NET-компонентов Объекты .NET Remoting можно размещать в инфраструктуре служб .NET-компонентов, что позволяет использовать такие возможности служб COM+, как транзакции, JIT и создание пулов объектов.

Дополнительную информацию см. в Microsoft .NET Framework Component Services, Part 1.

Соседние файлы в папке ПвИ