Обёртка библиотеки[1], библиотека-обёртка[2] (англ. wrapper library) — библиотека, реализующая промежуточный слой между прикладной программой и другой библиотекой или интерфейсом программирования приложений (API). Обёртку можно рассматривать как внутренний предметно-ориентированный язык (как обычная библиотека программ), но не совершенно новый язык. Обёртка библиотеки предоставляет только увязку, уточнение или сокращение существующего синтаксиса базового API или ABI обёртываемой библиотеки.[3]
Написание обертки для библиотеки может быть направлено на обеспечение совместимости данной библиотеки (или API) с определенным языком программирования (часто сценарным), в котором прямое использование функций этой библиотеки (или API) может быть сложным или невозможным.
Ещё одной причиной для создания обертки может быть желание упростить работу для разработчиков приложений. Например, это может быть адаптация библиотеки к другой парадигме программирования или компенсация недостатков дизайна библиотеки.
Другими применениями обёрток для библиотек могут быть[4]:
- Исследование использования: путем обёртывания библиотек, авторы могут отслеживать и анализировать, как приложения используют различные функции и методы.
- Отладка: с помощью оберток для библиотек, разработчики могут получить детальное представление о том, как используются библиотеки и как функции из этих библиотек ведут себя во время выполнения. Это может помочь им выявить ошибки или проблемы, которые иначе трудно обнаружить.
- Профайлинг
- Взаимодействие между библиотеками: обертки также могут контролировать, как библиотеки взаимодействуют друг с другом внутри приложения. Это может быть важно в более крупных и сложных системах, где могут использоваться множество библиотек одновременно.
Кроме того, существуют кросс-платформенные обертки для библиотек, которые нивелируют различия реализаций для разных операционных систем. Например, wxWindows является обёрткой библиотеки WxWidgets, написанной на C++[5].
И хотя обёртки упрощают программирование, недостаток заключается в том, что обёртки немного отличается: каждая обёртка требует своего изучения.[6]
Примечания
править- ↑ Саммерфилд, Марк. Python на практике. Создание качественных программ с использованием параллелизма, библиотек и паттернов. ДМК Пресс, 2014 год, 338 с.
- ↑ Пай, Прасид. Реактивное программирование на С++ / Прасид Пай, Питер Абрахам. — ДМК Пресс, 2019. — ISBN 978-5-97060-778-7.
- ↑ Jugel, 2010.
- ↑ Brendel, Ronny; Wesarg, Bert; Tschüter, Ronny; Weber, Matthias; Ilsche, Thomas; Oeste, Sebastian (2018). "Generic Library Interception for Improved Performance Measurement and Insight". arXiv:1803.07495 [cs.SE].
- ↑ Overview of wxPython . Дата обращения: 9 июля 2023. Архивировано 9 июля 2023 года.
- ↑ Richardson, Leonard. RESTful Web Services / Leonard Richardson, Sam Ruby. — O'Reilly Media, Inc., 2007. — P. 446. — ISBN 9780596529260.
Литература
править- Jugel, U. (2010). van den Brand, M., Gašević, D., Gray, J. (ed.). "Generating Smart Wrapper Libraries for Arbitrary APIs". Software Language Engineering. SLE 2009. Lecture Notes in Computer Science. 5969. Springer, Berlin, Heidelberg. doi:10.1007/978-3-642-12107-4_24.
{{cite journal}}
: Википедия:Обслуживание CS1 (множественные имена: editors list) (ссылка)
Ссылки
править- Wrapper a concept, Use cases, and Drawbacks. Pratyush Mani Manav — коротко о понятии обёртки, сценариях использования и недостатках
Для улучшения этой статьи желательно:
|