|
MatrixWB
- Общая
структурно-функциональная схема.

Теперь конкретизируем
каждый элемент. Сначала нужно ввести соглашения о терминах.
-
Система - часть
программы, которая отвечает за какую-либо "глобальную" задачу. В
нашей программе выделяться четыре системы: сетевая, анализа
и обработки, отображения и управления. Системы между собой
связаны единым стандартизированным интерфейсом. Этот интерфейс является
высокоуровневым, и не зависит от нижнего, транспортного, уровня.
То есть, он может быть поверх TCP/IP, быть соглашением на вызовы
из DLL, СОМ - интерфейсом или любым сочетанием оных. Эта независимость
позволяет организовать как одновременную работу всех систем в составе
одного приложения (набор DLL и система управления как *.exe файл),
так и полностью распределенную, когда каждая система работает на
разных компьютерах и соединены любым сетевым протоколом, поверх
которого реализован наш интерфейс. Причем допускается любое сочетание
- каждая система на отдельном компьютере, две на одном, третья удаленная
и т. д. Не накладывается никаких ограничений на среду в которой
функционируют системы - Unix, Windows, Linux, DOS.
Системы в
свою очередь состоят из модулей.
-
Модуль - часть
системы, связанный с ней своим интерфейсом. Модуль функционирует
подобно plug-in в обычных приложениях. Он отвечает за реализацию
какой-то одной функции - HTTP, NNTP, SSL, Java, XML. Модуль должен
самостоятельно "заявить" системе, что он "умеет", свою версию, и
дополнительную служебную информацию. Допускается после "переговора"
с системой непосредственная работа двух модулей между собой. Межмодульный
интерфейс также должен допускать функционирование на удаленной машине.
Система
отображения (рендеринга)

Система отображения
состоит из следующих модулей:
-
Модуль
отображения. Обеспечивает отображение графической и текстовой
информации на устройстве вывода. В простейшем случае может быть
просто экземпляром класса TCanvas (Delphi) или дескриптором окна
(handle);
-
Модуль
управления. Собирает информацию о доступных модулях, свойствах
операционной системы и имеет интерфейс с системой управления. К
модулю управления в первую очередь обращаются все другие модули,
когда они присоединяются к системе, запрашивают данные о других
доступных модулях и параметрах системы (ОС, в среде которой происходит
функционирование системы). Координирует работу всех модулей.
-
Модули,
которые отвечают за конкретные функции - рендеринг текста, поддержку
конкретных API (Direct X, Glide, Open GL, X Window), отображения
рисунков. Модули могут предлагать альтернативный способ отображения
информации, например голосовой вывод, отображение в 3-D пространство.
-
Интерфейсный
модуль обеспечивает интерфейс с другими системами и служит для
доставки нужной информации из других систем к системе отображения.
Также взаимодействует с системой управления.
Система
анализа и обработки

Для упрощения
на схемах не показаны взаимосвязи между отдельными модулями и интерфейсным
модулем а также ряд других, которые не не требуют непосредственного
описания.
- Модуль обработки
аналогичен модулю отображения - он просто сначала разделяет работу
между различными модулями, а потом их результат собирает воедино
и передает интерфейсному модулю для передачи в систему отображения.
- Модули HTML, XML,
CSS, Java, JPEG, GIF и другие обеспечивают обработку каждый
своего типа информации.
- Интерфейсный модуль
также аналогичный.
Сетевая
система

-
Модули,
которые реализуют протоколы, зависят от конкретной ОС и связаны
с ее сетевым интерфейсом.
-
Модуль
обработки кодировок должен уметь перекодирововать на лету документ,
автоматически распознавая кодировку исходного документа.
-
Обработка
ошибок HTTP - например, если запрошенный документ не обнаружен,
то, если возможно, подняться на уровень вверх (отобразить страницу
по умолчанию) или провести поиск документа или домена.
-
Модель
кеша должен обеспечить ускорение загрузки страниц, фоновою подкачку
тех документов, которые могут понадобиться.
-
Локальный
модуль DNS должен ускорить работу с наиболее часто посещаемыми
узлами.
Данная
схема показывает общую концепцию программы. Число модулей может меняться
в зависимости от варианта установки, и даже динамически в ходе работы
(прокат модулей за необходимостью). На
внутреннюю реализацию модулей накладывается лишь три ограничения:
-
способность
функционировать в данной ОС;
-
реализация
заявленной функциональности;
-
обеспечение
внешнего интерфейса;
|