Книга: Искусство программирования для Unix
11.6.9. Модель CLI-сервера
11.6.9. Модель CLI-сервера
В мире Unix обычной является практика, когда серверные процессы вызываются управляющими программами[105], такими как inetd(8), т.е. сервер может получать команды через стандартный ввод и отправлять ответы на стандартный вывод. Управляющая программа затем обеспечивает подключение стандартного ввода и вывода сервера к порту определенной TCP/IP-службы. Преимущество такой организации функций заключается в том, что управляющая программа может работать как одна безопасная программа-диспетчер (gatekeeper) для всех серверов, которые она запускает.
Таким образом, одной из классических моделей интерфейсов является CLI-сервер. CLI-сервер — программа, которая при запуске в привилегированном режиме имеет простой CLI-интерфейс, считывающий данные со стандартного ввода и отправляющий данные на стандартный вывод. Когда сервер запускается в фоновом режиме сервер, он обнаруживает это и подключает свой стандартный ввод и вывод к определенному TCP/IP-порту.
В некоторых вариантах данной модели сервер по умолчанию переводится в фоновый режим, а для того чтобы он оставался в привилегированном режиме, в командной строке необходимо использовать определенный ключ. Но еще более важно то, что большая часть кода "не знает" и "не заботится" о том, работает ли программа в привилегированном режиме или запущена как управляющая TCP/IP-программа.
Серверы POP3, IMAP, SMTP и HTTP обычно соответствуют данной модели. Ее можно комбинировать с любыми моделями клиент/сервер, описанными ранее в данной главе. HTTP-сервер также может функционировать в качестве управляющей программы. CGI-сценарии, которые создают большую часть интерактивного содержания в Web, выполняются в обеспеченной данным сервером специальной среде, где они могут принимать ввод (из аргументов) из стандартного ввода и записывать сгенерированные в результате своей работы HTML-страницы в стандартный вывод.
Хотя данная модель весьма традиционна, термин "CLI-сервер" впервые введен в употребление автором данной книги.
- 11.6.1. Модель фильтра
- 11.6.2. Модель заклинаний
- 11.6.3. Модель источника
- 11.6.4. Модель приемника
- 11.6.5. Модель компилятора
- 11.6.6. Модель редактора ed
- 11.6.7. Rogue-подобная модель
- 11.6.8. Модель "разделения ядра и интерфейса"
- 11.6.9. Модель CLI-сервера
- 11.6.10. Модель интерфейсов на основе языков
- Однопользовательская модель
- Запуск InterBase-сервера
- Расширенная установка InterBase-сервера
- Статистика InterBase-сервера
- Минимальный состав сервера InterBase SuperServer
- Отличительные особенности сервера Yaffil
- Использование сервера Yaffil внутри процесса
- Одновременный запуск нескольких копий сервера (multi-instancing)
- Мониторинг состояния сервера
- 9.2. Работа прокси-сервера
- SERVER CLIENT MAPPING
- 7.4. Модель системы автоматизированного проектирования защиты информации