11.6.8. Модель "разделения ядра и интерфейса"
11.6.8. Модель "разделения ядра и интерфейса"
В главе 7 рассматривались доводы против создания крупных однопроцессных монолитов, а также обсуждалась возможность понижения глобальной сложности программ путем их разделения на взаимодействующие блоки. В мире Unix данная тактика часто реализуется путем отделения "ядра" программы (основных алгоритмов и логики, специфической для данной прикладной области) от "интерфейсной" ее части (которая принимает пользовательские команды, отображает результаты, а также может предоставлять такие службы, как интерактивная справочная система или история команд). В сущности, данная модель обособленного ядра и интерфейса, вероятно, является наиболее характерной моделью проектирования интерфейсов в Unix.
Другими более очевидными кандидатами для такого разграничения были бы фильтры. Однако фильтры в не-Unix-средах встречаются чаще, чем пары ядро/интерфейс с двунаправленной передачей данных между ними. Имитировать конвейеры просто. Сложно реализовать более развитые IPC-механизмы, необходимые для пар ядро/интерфейс.
Оуэн Тейлор (Owen Taylor), куратор библиотеки GTK+, широко используемой для создания пользовательских интерфейсов в системе X, превосходно показал технические преимущества данного вида разделения в конце своей заметки "Why GTK_MODULES is not a security hole" <http://www.gtk.org/setuid.html>. Он заканчивает статью так: "Безопасной setuid-программой является программа в 500 строк кода, выполняющая только то, что необходимо, а не библиотека в 500 000 строк, основной задачей которой является поддержка пользовательских интерфейсов".
Эта идея не нова. Ранние исследования сотрудников центра Xerox PARC в области графических пользовательских интерфейсов привели их к созданию схемы "модель-отображение-контроллер" (model-view-controller) как прототипа для GUI-интерфейсов.
• "Модель" в данном случае — то, что в мире Unix обычно называется "ядром" (engine). Модель содержит структуры данных, зависящие от предметной области, и логику приложения. Серверы баз данных являются основными примерами моделей.
• В часть "отображение" входит то, что приводит объекты предметной области в визуальную форму. В приложении с действительно четко разделенными "моделью/отображением/контроллером" компонент отображения извещается об обновлениях модели и отвечает скорее самостоятельно, а не под синхронным управлением контроллера или явных запросов на обновление.
• Компонент "контроллер" обрабатывает пользовательские запросы и передает их модели в виде команд.
На практике части "отображение" и "контроллер" часто сильнее связаны друг с другом, чем с моделью. Например, в большинстве GUI-интерфейсов комбинируется поведение частей "отображения" и "контроллера". Они разделяются только в тех случаях, когда приложение требует нескольких видов отображения модели.
Схема модель/отображение/контроллер в операционной системе Unix распространена гораздо шире, чем в других средах, именно потому, что существует прочная традиция "решать одну задачу хорошо", а IPC-методы являются одновременно простыми и гибкими.
Особенно мощная форма данной методики связывает интерфейс политики (часто GUI-интерфейс, комбинирующий функции отображения и контроллера) с ядром (моделью), который содержит интерпретатор для узкоспециального мини-языка. Данная модель проектирования рассматривалась в главе 8, где основное внимание было уделено конструкциям мини-языков. Здесь рассматриваются различные способы, с помощью которых такие ядра могут формировать компоненты более крупных систем кода.
Существует несколько основных вариантов данной модели проектирования.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Виртуальная память для систем разделения времени
Виртуальная память для систем разделения времени В связи с появлением в конце 60-х годов систем разделения времени — раннего этапа эволюции мультипрограммных ОС — многие производители компьютеров приняли виртуальную память на вооружение. При мультипрограммировании
17.5. Конфигурация интерфейса
17.5. Конфигурация интерфейса Один из шагов, выполняемых многими программами, работающими с сетевыми интерфейсами системы, — это получение от ядра списка всех интерфейсов, сконфигурированных в системе. Это делается с помощью вызова SIOCGIFCONF, использующего структуру ifconf,
Настройка интерфейса
Настройка интерфейса Все палитры в окне программы Photoshop можно перемещать. Вы можете скрыть палитры, которыми не пользуетесь, или, наоборот, отобразить те, которые вам нужны чаще всего. Чтобы не настраивать интерфейс приложения при каждом запуске, в Photoshop предусмотрена
Настройка интерфейса
Настройка интерфейса Разработчики программы Premiere Pro дали пользователю возможность изменять интерфейс программы по своему вкусу. Вы можете переместить окна в другие части экрана, изменить их размер, поменять местами вкладки, а также вынести содержимое какой-либо вкладки
Настройка интерфейса
Настройка интерфейса Под настройкой интерфейса системы КОМПАС-3D следует понимать следующие возможности изменения внешнего вида программы:• выбор стиля;• настройка внешнего вида;• изменение состава пунктов главного меню;• изменение состава панелей инструментов;•
1.6.4. Правило разделения: следует отделять политику от механизма и интерфейсы от основных модулей
1.6.4. Правило разделения: следует отделять политику от механизма и интерфейсы от основных модулей В разделе "Что в Unix делается неверно" отмечалось, что разработчики системы X Window приняли основное решение о реализации "механизма, а не политики". Такой подход был направлен на
7 Мультипрограммирование: разделение процессов для разделения функций
7 Мультипрограммирование: разделение процессов для разделения функций Если мы придаем большое значение структурам данных, то мы должны придавать большое значение независимой (и, следовательно, одновременной) обработке. Иначе для чего мы собираем объекты в структуру?
1.6.4. Правило разделения: следует отделять политику от механизма и интерфейсы от основных модулей
1.6.4. Правило разделения: следует отделять политику от механизма и интерфейсы от основных модулей В разделе "Что в Unix делается неверно" отмечалось, что разработчики системы X Window приняли основное решение о реализации "механизма, а не политики". Такой подход был направлен на
7 Мультипрограммирование: разделение процессов для разделения функций
7 Мультипрограммирование: разделение процессов для разделения функций Если мы придаем большое значение структурам данных, то мы должны придавать большое значение независимой (и, следовательно, одновременной) обработке. Иначе для чего мы собираем объекты в структуру?
11.6.8. Модель "разделения ядра и интерфейса"
11.6.8. Модель "разделения ядра и интерфейса" В главе 7 рассматривались доводы против создания крупных однопроцессных монолитов, а также обсуждалась возможность понижения глобальной сложности программ путем их разделения на взаимодействующие блоки. В мире Unix данная
Тип интерфейса
Тип интерфейса Интерфейс - это именованная коллекция определений абстрактных членов, которая может поддерживаться (т.е. реализоваться) данным классом или структурой. В отличие от модели COM, интерфейсы .NET не являются производными одного общего базового интерфейса, такого
1.1. Элементы интерфейса
1.1. Элементы интерфейса Первое, что вы увидите после запуска программы 3ds Max 2008, – ее основное окно (рис. 1.1).Если вы начинающий пользователь и не встечались с интерфейсом программы, сначала осмотрите элементы и ознакомьтесь с окружением. Вы увидите, что интерфейс
Элементы интерфейса
Элементы интерфейса Теперь поговорим об отключении или включении отдельных элементов интерфейса.Отключение анимацииОтключить все эффекты анимации можно с помощью параметра REG_DWORD-типа TurnOffSPIAnimations, расположенного в ветви реестра HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer.
Настройка интерфейса
Настройка интерфейса Существует возможность изменить расположение элементов интерфейса Проигрывателя Windows Media – переместить все элементы интерфейса в противоположную сторону (рис. 4.9). Для этого достаточно параметру REG_DWORD-типа ForceBiDi присвоить значение 1. Данный параметр
Реймонд Эрик Стивен
Просмотр ограничен
Смотрите доступные для ознакомления главы 👉