Сегодня остается весьма актуальной тема в сфере информационных технологий, посвященная разработке и развертыванию архитектуры «клиент – сервер». Связано это с тем, что информационные системы различных масштабов находят все большее применение в различных областях. Кроме того, структура любой базы данных создается по определенным параметрам, причем таким образом, что работать с ней в штатном режиме возможно только с применением специальных приложений. Поэтому реализация архитектуры «клиент – сервер» – очень важная задача, возникающая перед отделами информационных технологий на различных объектах, успешное решение которой позволит работать предприятию оптимально и бесперебойно.
Видео: Delphi tutorial Client server application
Сервер на основе сокетов
Сервер, работающий по протоколу сокетов, позволяет одновременно обрабатывать запросы от большого количества пользователей. При этом администратор в любой момент времени может внести коррективы в настройки, чтобы ввести ограничение на количество одновременно обслуживаемых пользователей. По умолчанию этот параметр не содержит ограничений.
После подключения клиента к серверу открывается отдельный канал с сокетом, по которому происходит обмен данными. Однако наиболее оптимальным и безопасным является развертывание для каждого нового подключения специального отдельного процесса.
Схема работы архитектуры «Клиент – сервер»
Рассмотрим более подробно схему реализации архитектуры, последовательно анализируя часто используемые определения:
1. Свойства ServerType и Port. Для того чтобы пользователь имел возможность подключиться к серверу, важно гарантировать, чтобы порт, используемый как сервером, так и клиентом совпадал. Именно назначение данного параметра производится в свойстве Port. Тип подключения определяется параметром ServerType.
2. Процесс открытия сокета. Для начала сессии «клиент – сервер» важно открыть сокет и порт. Используется свойство Listen.
3. Далее производится обмен данными с пользователем. При завершении работы происходит отключение клиента. При соответствующей команде системного администратора сервер завершает свою работу, прерывая все установленные соединения и прекращая процесс ожидания новых подключений.
Видео: Server Socket и ClientSocket в Delphi7
Применение TServerSocket в приложениях на языке Delphi «Клиент – сервер»
Для отправления и приема информации от пользователя используются события OnClientWrite и OnClientRead. При этом взаимодействовать с пользователем можно через такой параметр, как ClientSocket. При работе часто используются следующие методы и свойства:
Видео: [DELPHI] ClientSocket/ServerSocket.
- количество подключенных в текущий момент пользователей-
- число активных процессов-
- число свободных процессов-
- порт, хост-имя и локальный IP-адрес-
- разблокировка и блокировка сокета.
В заключение обратим внимание на часто применяемое особое свойство – Data. Это свойство применяется в следующей ситуации. Как правило, сервер используется для обслуживания большого количества пользователей, а значит, есть необходимость хранить сведения о каждом клиенте, причем эту информацию нужно привязать к конкретному сокету. В подобных ситуациях использование ручной привязки весьма неудобно, а потому широко применяется свойство Data. Однако важно помнить, что Data – это указатель, а потому важно обязательно проверить, выполнены ли все правила работы с указателями (указание типа, выделение памяти и т.д.)
Видео: Delphi [Клиент-сервер]. Приложение для интернет магазина.
Документация
На сегодняшний день литературы по разработке приложений «клиент – сервер» Delphi, связанной с разработкой и применением сокетов, представлено очень мало. Поэтому для детального изучения данного аспекта можно обратиться к документации по Linux и Unix-системам, т.к. в ней достаточно подробно рассматривается технология развертывания приложений с применением сокетов, однако, как правило, на языках Perl или С++.