Книга: C# для профессионалов. Том II
Сервер
Сервер
Сервер реализуется внутри консольного приложения. Мы ожидаем только, чтобы пользователь завершил работу сервера после чтения конфигурационного файла и настройки канала и удаленного объекта:
using System;
using System.Runtime.Remoting;
namespace Wrox.ProfessionalCSharp {
class Server {
static void Main(string[] args) {
RemotingConfiguration.Configure("Server.exe.config");
Console.WriteLine("Hit to exit");
Console.ReadLine();
}
}
}
Конфигурационный файл сервера
Способ создания конфигурационного файла сервера Server.exe.config
мы уже обсуждали. Существует только один важный момент. Так как клиент сначала регистрирует обработчик событий и после этого вызывает удаленный метод, то удаленный объект должен сохранять состояние клиента. Можно использовать с событиями объекты SingleCall
, поэтому класс RemoteObject
конфигурируется в виде активированного клиентом типа:
<configuration>
<system.runtime.remoting>
<application name="CallbackSample">
<service>
<activated type="Wrox.ProfessionalCSharp.RemoteObject, RemoteObject" />
</service>
<channels>
<channel type="System.Runtime.Remoting.Channels.Http.HttpChannel, System.Runtime.Remoting" port="6791" />
</channels>
</application>
</system.runtime.remoting>
</configuration>
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Совместимость клиентов и серверов различных версий
- Статистика InterBase-сервера
- Сервер для InterBase
- 1.3.3. Достоинства и недостатки анонимных прокси-серверов
- Минимальный состав сервера InterBase SuperServer
- Отличительные особенности сервера Yaffil
- Встраиваемый сервер
- Использование сервера Yaffil внутри процесса
- Асинхронный сервер и отмена выполняющихся запросов
- Одновременный запуск нескольких копий сервера (multi-instancing)