Программирование на языке Ruby
Шрифт:
Клиент:
• устанавливает соединение с сервером;
• привязывает локальный объект к удаленному экземпляру сервера;
• посылает сообщения серверу и получает ответы.
Метод класса
Если порт выбирается динамически, то для получения полного URI, включающего и номер порта, можно воспользоваться методом класса
Поскольку
На стороне клиента мы вызываем метод
Следует подчеркнуть, что на стороне сервера привязка осуществляется к единственному объекту, который должен отвечать на все получаемые запросы. Если клиентов несколько, то объект должен быть безопасным относительно потоков, чтобы не оказаться в некорректном состоянии. (Для совсем простых или узкоспециализированных приложений это может быть и необязательно.)
Мы не можем вдаваться в технические детали. Но имейте в виду, что если клиент читает или изменяет внутреннее состояние удаленного объекта, то при наличии нескольких клиентов возможна интерференция. Во избежание таких неприятностей мы рекомендуем применять механизмы синхронизации, например класс
Скажем хотя бы несколько слов о безопасности. Ведь не всегда желательно, чтобы с вашим сервером мог соединяться кто угодно. Помешать им пытаться вы не можете, зато можете сделать такие попытки безуспешными.
В программе
Приведем пример. Для создания нового списка ACL мы воспользуемся классом
Второй (необязательный) параметр метода
Первый параметр
Первая пара в этом примере, строго говоря, излишня, но проясняет смысл всей конструкции.
А как используются ACL? Метод
Теперь, после запуска сервиса любой неавторизованный запрос на соединение приведет к исключению
Это, конечно, не все, что можно сказать о библиотеке
20.2. Пример: эмуляция биржевой ленты
В этом примере сервер публикует в сети биржевые котировки акций. К серверу может обратиться любой клиент, желающий узнать, сколько сейчас стоит его пакет.
Но мы добавили одну тонкость. Не желая следить за малейшими колебаниями цен, мы реализовали модуль
Сначала рассмотрим модуль
Гримуар темного лорда II
2. Гримуар темного лорда
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Сопротивление
11. Последняя жизнь
Фантастика:
аниме
фэнтези
попаданцы
рейтинг книги
Тринадцатый III
3. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
рейтинг книги
Великий род
3. Медорфенов
Фантастика:
юмористическое фэнтези
попаданцы
аниме
рейтинг книги
Вперед в прошлое 6
6. Вперед в прошлое
Фантастика:
попаданцы
альтернативная история
рейтинг книги
Менталист. Трансформация
4. Выиграть у времени
Фантастика:
фэнтези
альтернативная история
рейтинг книги
Граф
6. Помещик
Фантастика:
альтернативная история
рейтинг книги
Истребители. Трилогия
Фантастика:
альтернативная история
рейтинг книги
Север помнит
Любовные романы:
любовно-фантастические романы
рейтинг книги