Чтение онлайн

на главную - закладки

Жанры

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

Ватсон Карли

Шрифт:

<channel type="System.Runtime.Remoting.Channels.Tcp.TcpChannel, System.Runtime.Remoting" />

</channels>

</application>

 </system.runtime.remoting>

</configuration>

Серверный код, использующий конфигурационные файлы

В серверном коде необходимо сконфигурировать удаленное использование статического метода

Configure
из класса
RemotingConfiguration
. Здесь создаются экземпляры всех определяемых
каналов. Может быть мы захотим также узнать о конфигурациях каналов из серверного приложения. Поэтому созданы статические методы
ShowActivatedServiceTypes
и
ShowWellKnovmServiceTypes
, которые вызываются после загрузки и запуска удаленной конфигурации:

public static void Main(string[] args) {

 RemotingConfiguration.Configure("HelloServer.exe.config");

 Console.WriteLine(

"Application: " + RemotingConfiguration.ApplicationName);

 ShowActivatedServiceTypes;

 ShowWellKnownServiceTypes;

 System.Console.WriteLine("hit to exit");

 System.Console.ReadLine;

 return;

}

Эти две функции показывают данные конфигурации хорошо известных и активированных клиентом типов:

public static void ShowWellKnownServiceTypes {

 WellKnownServiceTypeEntry[] entries =

RemotingConfiguration.GetRegisteredWellKnownServiceTypes;

 foreach (WellKnownServiceTypeEntry entry in entries) {

Console.WriteLine("Assembly: " + entry.AssemblyName);

Console.WriteLine("Mode: " + entry.Mode);

Console.WriteLine("URI " + entry.ObjectUri);

Console.WriteLine("Type: " + entry.TypeName);

 }

}

public static void ShowActivatedServiceTypes {

 ActivatedServiceTypeEntry[] entries =

RemotingConfiguration.GetRegisteredActivatedServiceTypes;

 foreach(ActivatedServiceTypeEntry entry in entries) {

Console.WriteLine("Assembly: " + entry.AssemblyName);

Console.WriteLine("Type: " + entry.TypeName);

 }

}

Клиентский код, использующий конфигурационные файлы

В клиентском коде с помощью конфигурационного файла

client.exe.config
нужно сконфигурировать только удаленные службы. После этого можно использовать оператор new для создания новых экземпляров класса
Remote
независимо от того, происходит ли работа с активированными сервером или с активированными клиентов удаленными объектами. Но помните, что существует небольшая разница. Для активированных клиентом объектов теперь можно использовать произвольные конструкторы с помощью оператора
new
. Это невозможно для активированных сервером объектов и не имеет смысла в этом случае: объекты
SingleCall
не могут иметь состояния, так как они разрушаются вместе с каждым вызовом, объекты
Singleton
создаются только однажды. Вызов
произвольных конструкторов полезен только для активированных клиентом объектов, так как только для этого вида объектов оператор new реально вызывает конструктор удаленного объекта:

RemotingConfiguration.Configure("HelloClient.exe.config");

Hello obj = new Hello;

if (obj == null) {

 Console.WriteLine("could not locate server");

 return 0;

}

for (int i=0; i < 5; i++) {

 Console.WriteLine(obj.Greeting("Christian"));

}

Службы времени жизни в конфигурационных файлах

Аренда конфигурации для удаленных серверов также может делаться с помощью конфигурационных файлов приложений. Элемент

<lifetime>
имеет атрибуты
leaseTime
,
sponsorshipTimeOut
,
renewOnCallTime
и
pollTime
:

<configuration>

 <system.runtime.remoting>

<application>

<lifetime leaseTime="15M" sponsorshipTimeOut="4M" renewOnCallTime="3M" pollTime="30s" />

</application>

 </system.runtime.remoting>

</configuration>

Используя конфигурационные файлы, можно изменить удаленную конфигурацию, редактируя файлы вместо работы с исходным кодом. Легко изменить канал для использования HTTP вместо TCP, изменить порт, имя канала, и т. д. С помощью добавления одной строки сервер может слушать два канала вместо одного.

Инструменты для файлов удаленной конфигурации

Не обязательно начинать создавать конфигурационный файл XML для .NET Remoting с чистого листа. Для этого существует несколько инструментов:

□ При использовании версии .NET Remoting Beta 1 можно найти пример

convertconfig.exe
в списке примеров Framework SDK. С помощью этого инструмента можно преобразовать использовавшийся ранее компактный формат файлов в новый формат на основе XML.

□ С помощью примера

configfilegen.exe
можно создать конфигурационный файл из сборки. Запустите эту программу без параметров, чтобы увидеть все возможные конфигурации. Следующая командная строка создает активированный клиентом (-а) конфигурационный файл для сервера (-s).

configfilegen -ia:RemoteHello.dll -ос:HelloServer.exe.config -s -a

Системный администратор использует утилиту .NET Admin, чтобы реконфигурировать существующие конфигурационные файлы. Утилиту .NET Admin можно запустить с помощью команды:

mmc mecorcfg.msc

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

Приложения хостинга

До этого момента все примеры серверов выполнялись на автономных (self-hosted) серверах .NET. Автономный сервер должен запускаться вручную. Удаленный сервер .NET может запускаться во множестве других типов приложений. В службе Windows сервер автоматически запускается во время старта, и кроме того, процесс может выполняться с полномочиями системной учетной записи. Создание служб Windows описано в главе 24.

Поделиться:
Популярные книги

Я тебя не отпускал

Рам Янка
2. Черкасовы-Ольховские
Любовные романы:
современные любовные романы
6.55
рейтинг книги
Я тебя не отпускал

Орден Багровой бури. Книга 3

Ермоленков Алексей
3. Орден Багровой бури
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Орден Багровой бури. Книга 3

Звезда сомнительного счастья

Шах Ольга
Фантастика:
фэнтези
6.00
рейтинг книги
Звезда сомнительного счастья

Прометей: каменный век II

Рави Ивар
2. Прометей
Фантастика:
альтернативная история
7.40
рейтинг книги
Прометей: каменный век II

Жнецы Страданий

Казакова Екатерина
1. Ходящие в ночи
Фантастика:
фэнтези
9.32
рейтинг книги
Жнецы Страданий

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Громовая поступь. Трилогия

Мазуров Дмитрий
Громовая поступь
Фантастика:
фэнтези
рпг
4.50
рейтинг книги
Громовая поступь. Трилогия

Надуй щеки! Том 5

Вишневский Сергей Викторович
5. Чеболь за партой
Фантастика:
попаданцы
дорама
7.50
рейтинг книги
Надуй щеки! Том 5

Лэрн. На улицах

Кронос Александр
1. Лэрн
Фантастика:
фэнтези
5.40
рейтинг книги
Лэрн. На улицах

Комбинация

Ланцов Михаил Алексеевич
2. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Комбинация

Стеллар. Заклинатель

Прокофьев Роман Юрьевич
3. Стеллар
Фантастика:
боевая фантастика
8.40
рейтинг книги
Стеллар. Заклинатель

Решала

Иванов Дмитрий
10. Девяностые
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Решала

Месть бывшему. Замуж за босса

Россиус Анна
3. Власть. Страсть. Любовь
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Месть бывшему. Замуж за босса

Товарищ "Чума" 3

lanpirot
3. Товарищ "Чума"
Фантастика:
городское фэнтези
попаданцы
альтернативная история
5.00
рейтинг книги
Товарищ Чума 3