Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | Предыдущая версия | ||
|
bbnohost [2018/11/30 01:12] |
bbnohost [2022/12/27 13:39] (текущий) iadenisov |
||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | . | ||
| + | Для работы клиентских (прикладных) модулей необходимы базовые абстракции файловой системы, | ||
| + | |||
| + | Разделение *System* на абстрактный интерфейс и платформо-зависимую реализацию позволяет добиться **герметичности** платформо-независимой части системного слоя. Герметичность позволяет заменять платформо-зависимые системные модули без модификации клиентских модулей. | ||
| + | |||
| + | Герметичность здесь понимается как отсуствие [[http:// | ||
| + | |||
| + | В идеале, | ||
| + | |||
| + | # Решение проблемы нарушения герметичности # | ||
| + | |||
| + | ## Модификация модуля Kernel ## | ||
| + | |||
| + | На схеме показаны зависимости прикладного и системного слоя от модуля *Kernel*. | ||
| + | |||
| + | Эти зависимости не позволяют нам произвести безопасную замену модуля *Kernel*, например, | ||
| + | |||
| + | В целях устранения данного нарушения герметичности предлагается разделение интерфейса модуля *Kernel* на платформо-независимую (условно: | ||
| + | |||
| + | Плюсом данного решения является полное изолирование клиентских модулей от платформы. | ||
| + | |||
| + | Минусом является то, что модуль *Kernel* это специфический системный модуль: | ||
| + | |||
| + | Решением данной проблемы может стать использование специальных соглашений и разделение платформо-зависимых компонентов на абстракции и платформо-зависимые реализации (Host-компоненты). | ||
| + | |||
| + | ## Устранение зависимостей от подсистемы Host ## | ||
| + | |||
| + | Модули подсистем *Std* и *System*, входящие в эталон BlackBox, по большей части являются платформо-независимыми. Однако, | ||
| + | |||
| + | Эти зависимости в той или иной степени обеспечивают функционирование эталона, | ||
| + | |||
| + | Для устранения зависимости подсистемы *Std* от *Host* введём ряд дополнительных абстракций в подсистему *System*, которые заместят необходимые ранее зависимости. А подсистему *Host* дополним подсистемой *Oberhost* (рабочее название, | ||
| + | |||
| + | Некоторые прямые и косвенные зависимости (формы, | ||
| + | |||
| + | Прикладные компоненты с зависимостями от *Host*, должны быть аналогичным образом преобразованы в набор абстракций и Host-реализаций. | ||
| + | |||
| + | ---- | ||
| + | |||
| + | Кушнир П.М., Кузьмицкий И.А. | ||
| + | |||
| + | Ярославль, | ||