Оболочка - это, как правило, семейство функций, которые содержат вызовы функций для библиотеки или API, таких как win32, DirectX и т. Д., Каким-то абстрактным способом для конечного пользователя.Часто они настраиваются таким образом, чтобы функции, которые вы вызываете в оболочке, не совпадали с исходным API, или были настроены некоторые параметры по умолчанию, чтобы вам было немного проще работать с API.Кроме того, в конкретном экземпляре языковой оболочки функциональность была встроена в API времени выполнения языка, а затем предоставляется конечному пользователю.Например, можно представить вызовы win32 пользователю Python, создав плагин C-библиотеки для python с вызовами API win32, а затем создать библиотеку python, в которой могут быть настроенные функции python, вызывающие функции win32, предоставляемыеПлагин C-библиотеки.В этом случае библиотека Python «оборачивает» нативную библиотеку win32 на основе C.
Фреймворк похож на обертку, но в своем наиболее часто используемом определении он немного отличается тем, что работает, создавая некоторыетип среды выполнения, в которую вы создаете обратные вызовы для подключения, поэтому, когда фреймворк хочет выполнить какую-то задачу, вы написали функцию, которая вызывается для этой задачи.Это называется «Голливудский принцип» программирования, который в основном гласит: «Не звоните нам, мы вам позвоним».Таким образом, работая с этой моделью, вы создаете функции, регистрируете их с помощью фреймворка, и ваша функция вызывается, когда фреймворк должен вызвать ее, и фреймворк передает свои собственные внутренние параметры в качестве аргументов вашей функции.Хорошим примером является GUI-каркас, где вы создаете обратные вызовы для кнопок и других событий, и GUI-каркас вызывает эти функции по мере того, как он обрабатывает свой цикл обработки событий во время выполнения.
Так что я думаю, один способ придуматьосновное различие между ними заключается в том, что обертки, как правило, статичны (то есть предоставляют библиотекам и функциям настраиваемые вызовы функций, которые либо заполняют значения по умолчанию для вас, либо переводят их на другой язык), тогда как инфраструктура имеет тенденцию быть динамической (т.е.это система времени выполнения, для которой вы создаете обратные вызовы и регистрируете ее в платформе, которая затем вызывается в течение некоторого времени цикла событий среды выполнения или ядра и т. д., как инструментарий GUI).