Внутренняя архитектура
На схеме показана внутренняя структура сервера:
При поступлении запроса от клиента создается сессия с уникальным идентификатором. Строка запроса анализируется. Если запрашиваемый файл существует, то сервер посылает клиенту положительный ответ с файлом. Журналы обновляются новой записью об этом событии. Если запрос содержит запрос отчета, то создается специальная сессия отчета. После построения отчета результат сохраняется в папке с номером сессии в качестве имени. Сервер отвечает клиенту и сообщает новое местоположение файла. Клиент посылает новый запрос на новое местоположение файла и получает файл с результатом. Сессия с полученным файлом хранится на сервере до истечения времени сессии.
Ниже приведен пошаговый графический обзор операции запроса отчета с помощью веб-браузера:
- клиент отправляет запрос; имя отчета - "1.fr3"
- сервер создает новый экземпляр FastReport и передает параметры запроса
- FastReport готовит отчет и экспортирует результаты в html-файл в папку, название папки совпадает с номером сессии
- сервер ожидает результатов от FastReport
- клиент получает перенаправление на местоположение результирующего файла
- клиент посылает новый запрос файла результата
- сервер доставляет файл результата клиенту
Пошаговый графический обзор операции запроса отчета с помощью FastReport (TfrxReportClient):
- клиент хочет показать отчет "1.fr3":
- клиентский компонент отправляет запрос с именем отчета "1.fr3" (собственный формат результата)
...
- FastReport подготавливает отчет и сохраняет результаты в файл fp3; имя папки совпадает с номером сессии
- сервер ожидает результатов от FastReport
- клиент получает перенаправление на местоположение результирующего файла
...
- сервер отправляет файл результата клиенту
- клиент отображает отчет
Если запрашиваемый отчет содержит какие-либо формы, процесс усложняется:
- клиентский компонент отправляет запрос с именем отчета "1.fr3"
- сервер создает новый экземпляр FastReport и передает параметры запроса
- FastReport готовит отчет и сохраняет веб-форму в папке с именем в соответствии с номером сессии
- сервер ожидает результатов от FastReport
- сервер перенаправляет клиента на файл веб-формы
- клиент получает веб-форму, в то время как FastReport ждет
- клиент отправляет состояния элементов управления диалоговой веб-формы на сервер
- сервер передает значения управляющих элементов на сервер
- сервер доставляет полученную информацию в FastReport
Формат строки запроса сервера, протоколирование, аутентификация и другие вопросы, касающиеся функционирования сервера, описаны ниже.