Parser Generator
Инструментарий для построения компиляторов. |
Главная О сайте Документация Download Ссылки Библиография О нас |
Архитектура системыЛюбая программа состоит не только из набора функций, которые напрямую имеют отношение к решению задач пользователя, но также из различных вспомогательных модулей, классов, алгоритмов. Эти части взаимодействуют с операционной системой, управляют распределением памяти, а также выполняет многие другие задачи. Важную роль в построении любой программы имеет ее архитектура- способы и механизмы которые определяют передачу данных между блоками, сохранение информации, сохранение программы в работоспособном состоянии после сбоев, передачу сообщений от одних объектов другим, способы расширения системы. Для написания большой и сложной программы не обойтись без серьезного продумывания всех этих вопросов. В последнее время очень много стали говорить о повторном использовании кода, об интеграции программ, об универсальных форматах хранения информации... Собрав и изучив материал по этим вопросам, была разработана и внедрена на данной программе специальная система, которая позволяет создавать расширяемые программы. Эта система состоит множества механизмов и наборов компонент, реализующих эти механизмы. Другими словами создана целая спецификация, описывающая то, как необходимо создавать программу, чтобы она была расширяемой, умела встраиваться в существующую программу, была в состоянии получать и принимать данные из других частей программы.
Введение. Основные идеи.Основное требование, которое предъявлялось к архитектуре системы- динамическая расширяемость. Т.е. возможность добавлять к программе дополнительные модули. Можно сказать, что уже созданы подобные системы- COM, ActiveX. Однако, эти технологии не подразумевают, что все произойдет без участия программиста или оператора- для того, чтобы добавить новый блок в программу необходимо либо внедрить новый объект в документ программы, либо добавить новый блок при помощи средства разработки. В нашей разработке все происходит автоматически- при появлении нового модуля на жестком диске компьютера основная программа самостоятельно его находит, распознает его и встраивает в общую систему. Таким образом, основной запускаемый файл системы вообще может не представлять для пользователя интереса, вся полезная для него логика скрыта в этих самых подключаемых модулях. Основной же файл лишь подключает все модули и управляет их работой. Основное удобство при использовании такого подхода является его ориентированность на использование в настольных приложениях Win32. Для каждого модуля определяется какие пугнкты меня должны быть добавлены в основное меню, какие сообщения должны ему передаваться.
Менеджер компонентов.
Основой всего механизма является менеджер компонентов,
который управляет всеми компонентами подключенными в систему.
Он реализован в виде класса
Важную роль играет класс
Входная точка в компонент. Через нее создаются все интерфейсы компонентов.
Теперь рассмотрим абстрактный класс Теперь можно вкратце описать работу системы. После запуска стартует менеджер компонентов. В своих специальных папках он находит все динамические библиотеки, регистрирует их и через соответствующие интерфейсы определяет все настройки, которые необходимо произвести с окружением (добавляет пункты меню, кнопки на панели инструментов, после этого он ожидает воздействия пользователя. При нажатии на определенные кнопки или при выборе пунктов меню ядро передает соответствующие сообщения компонентам. Компоненты запускают свои окна, осуществляя необходимы действия, передают свои результаты ядру. Ядро определяет, какой компонент заинтересован в этих данных и отсылает их ему. Вся пересылка данных ведется в основном с помощью XML строк, что позволяет не думать об общих структурах данных. Это вообще позволяет использовать различные инструментальные средства. Например Visual C, Visual Basic, Delphi, Borland C Builder...
|
|||||||||||||||
© С. Григорчук 2001, Содержание, дизайн |
|