Инструменты пользователя

Инструменты сайта


bb:nohost

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
Следующая версия Следующая версия справа и слева
bb:nohost [2016/04/06 20:08]
prospero78 [Модификация модуля Kernel]
bb:nohost [2016/04/06 20:15]
prospero78 [Устранение зависимостей от подсистемы Host]
Строка 46: Строка 46:
 Эти зависимости не позволяют нам произвести безопасную замену модуля ''Kernel'', например, при замене операционной системы. Безопасность, в данном случае, это //соблюдение контрактов интерфейса//. Текущий интерфейс модуля ''Kernel'' явно зависит от модуля ''WinApi'', что предполагает изменение этого интерфейса (а значит контрактов), при смене ОС. Это и есть нарушение герметичности системного слоя **БлэкБокса**. Эти зависимости не позволяют нам произвести безопасную замену модуля ''Kernel'', например, при замене операционной системы. Безопасность, в данном случае, это //соблюдение контрактов интерфейса//. Текущий интерфейс модуля ''Kernel'' явно зависит от модуля ''WinApi'', что предполагает изменение этого интерфейса (а значит контрактов), при смене ОС. Это и есть нарушение герметичности системного слоя **БлэкБокса**.
  
-В целях устранения данного нарушения герметичности предлагается разделение интерфейса модуля ''Kernel'' на платформо-независимую (условно: Pascal_kernel) и платформо-зависимую части(условно: Win32kernelWin64kernelLin32kernelLin64kernel и т. д.).+В целях устранения данного нарушения герметичности предлагается разделение интерфейса модуля ''Kernel'' на платформо-независимую (условно: ''(Kernel)Pascal'') и платформо-зависимую части(условно: ''(Kernel)Win32''''(Kernel)Win64''''(Kernel)Lin32''''(Kernel)Lin64'' и т. д.).
  
 Плюсом данного решения является **полное изолирование** клиентских модулей от платформы.  Плюсом данного решения является **полное изолирование** клиентских модулей от платформы. 
Строка 56: Строка 56:
 ## Устранение зависимостей от подсистемы Host ## ## Устранение зависимостей от подсистемы Host ##
  
-Модули подсистем *Stdи *System*, входящие в эталон BlackBox, по большей части являются платформо-независимыми. Однако, в некоторых местах обнаруживаются прямые (импорт) или косвенные (через строковые константы/ресурсы, отображения на формах и т.д.) зависимости от подсистемы *Host*.+Модули подсистем ''Std'' и ''System'', входящие в эталон **BlackBox**, по большей части являются платформо-независимыми. Однако, в некоторых местах обнаруживаются прямые (импорт) или косвенные (через строковые константы/ресурсы, отображения на формах и т. д.) зависимости от подсистемы ''Host''.
  
-Эти зависимости в той или иной степени обеспечивают функционирование эталона, при этом ухудшая его платформо-независимость. Так как функциональность *Hostнужна системному слою, то необходимо сохранить её, но уже с использованием герметичных решений. +Эти зависимости в той или иной степени обеспечивают функционирование эталона, при этом ухудшая его платформо-независимость. Так как функциональность ''Host'' нужна системному слою, то необходимо сохранить её, но уже с использованием герметичных решений. 
  
-Для устранения зависимости подсистемы *Stdот *Hostвведём ряд дополнительных абстракций в подсистему *System*, которые заместят необходимые ранее зависимости. А подсистему *Hostдополним подсистемой *PascalHost*, в которой находятся реализации этих абстракций(Win32HostWin64HostLin32HostLin64Host).+Для устранения зависимости подсистемы ''Std'' от ''Host'' введём ряд дополнительных абстракций в подсистему ''System'', которые заместят необходимые ранее зависимости. А подсистему ''Host'' дополним подсистемой ''(Host)Pascal'', в которой находятся реализации этих абстракций( ''(Host)Win32''''(Host)Win64''''(Host)Lin32''''(Host)Lin64'').
  
-Некоторые прямые и косвенные зависимости (формы, строковые ресурсы) подсистем *Stdи *Systemмогут быть перемещены в подсистему *Hostцеликом, или частично. Например, модуль *StdMenuToolили содержимое меню *(System)Menus*, которое состоит из текстовых команд зависящих от подсистемы *Host*. Такие команды могут быть размещены в меню *(Host)Menus*.+Некоторые прямые и косвенные зависимости (формы, строковые ресурсы) подсистем ''Std'' и ''System'' могут быть перемещены в подсистему ''Host'' целиком, или частично. Например, модуль ''StdMenuTool'' или содержимое меню ''(System)Menus'', которое состоит из текстовых команд зависящих от подсистемы ''Host''. Такие команды могут быть размещены в меню ''(Host)Menus''.
  
-Прикладные компоненты с зависимостями от *Host*, должны быть аналогичным образом преобразованы в набор абстракций и Host-реализаций.+Прикладные компоненты с зависимостями от ''Host'', должны быть аналогичным образом преобразованы в набор абстракций и Host-реализаций.
  
 ---- ----
bb/nohost.txt · Последнее изменение: 2020/10/29 07:08 (внешнее изменение)