Вопрос

Я просматривал исходный код ЖелезоПитон проект и Сад CMS проект.IronPython работает с пространством имен Microsoft.Scripting.Hosting.Shell (часть ДЛР).Проект Orchard также косвенно использует концепцию «оболочки» в различных интерфейсах (IShellContainerFactory, IShellSettings).

Ни один из упомянутых выше проектов не имеет подробной документации, поэтому определение значения типа (класса и т. д.) по его названию весьма полезно, если вы пытаетесь выяснить общую структуру/архитектуру приложения, читая исходный код.

Теперь мне интересно:что имеют в виду авторы этого исходного кода, когда говорят о «оболочке»?Когда я слышу слово «оболочка», я думаю о чем-то вроде интерпретатора командной строки.Это имеет смысл для IronPython, поскольку у него есть интерактивный интерпретатор.Но для меня это не имеет особого смысла применительно к веб-CMS.

О чем мне следует думать, когда я сталкиваюсь с чем-то, называемым «оболочкой»?Какова в общих чертах роль и ответственность «оболочки»?Можно ли вообще ответить на этот вопрос?Является ли значение слова «оболочка» субъективным (что делает этот термин бесполезным)?

Спасибо.

Это было полезно?

Решение

Я думаю, что общее значение оболочки будет «пользовательский процесс, который интерпретирует и выполняет команды».

  1. 'Пользовательский процесс':в отличие от процесса, встроенного в ядро ​​операционной системы.JCL в мире мэйнфреймов IBM было бы трудно считать оболочкой.

  2. 'интерпретирует и выполняет':В той или иной форме оболочка считывает команды из файла или терминала и реагирует на то, что представлено, а не жестко запрограммирована на выполнение определенной последовательности команд.

  3. 'команды:какие это команды, зависит от контекста.В стандартных оболочках Unix выполняемые команды представляют собой в основном другие программы, причем оболочка соответствующим образом связывает их вместе.Очевидно, что существуют встроенные команды, а также обычно существует синтаксис управления потоком данных, позволяющий соответствующим образом реагировать на результаты выполнения команд.

В других контекстах разумно подумать о выполнении других типов команд.Например, можно представить себе «оболочку SQL», которая позволяет пользователю выполнять операторы SQL при подключении к базе данных.

Оболочка Python будет поддерживать нотации Pythonic и выполнять операторы, подобные Python, с синтаксисом, тесно связанным с синтаксисом Python.Оболочка Perl будет поддерживать нотации, подобные Perl, и выполнять операторы, подобные Perl,...И так список можно продолжать.(Например, в Tcl есть tclsh — оболочка Tcl.)

Другие советы

В Orchard термин «оболочка» на самом деле является скорее метафорой прицела.Существует три вложенных области действия:хост, оболочка и работа.

Хост — это единый контейнер, который существует на протяжении всего времени существования домена веб-приложения.

Оболочка — это дочерний контейнер, созданный хостом и построенный в соответствии с текущей конфигурацией.Если конфигурация изменена, создается новая оболочка, а существующая удаляется.

Работа — это еще один контейнер, созданный оболочкой, в котором хранятся компоненты, действующие в течение одного запроса.

Одна приятная особенность использования контейнера оболочки заключается в том, что он помогает избежать использования статических переменных и необходимости циклически включать домен приложения при изменении конфигурации.Еще одна приятная вещь заключается в том, что он позволяет домену приложения Orchard обслуживать более одного «сайта» одновременно, когда хост содержит несколько оболочек и использует соответствующую для каждого запроса.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top