Что такое враппер в программировании
Перейти к содержимому

Что такое враппер в программировании

  • автор:

Обёртка

В языках программирования, таких как JavaScript , обёртка является функцией, которая предназначена для вызова одного или более других функций , иногда исключительно для удобства , а иногда адаптируя их чтобы сделать немного отличающийся задачу в процессе.

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 3 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

Создание обёрток (wrappers)

Теги: api, javascript, frontend, обёртки, wrappers, браузер, browser, engine, xml/html, api браузера, селекция api, этапы написания обёртки, накопление статистики, итеративный процесс разработки, xmlhttprequest, websocket, xhr, abstraction layer, фронтенд

JS_Deep_Last_11.07_1_Site.png

Частой практикой в программировании является написание обёрток. Задача обёртки – сброс сложности в программировании, недопущение «расползания» неудачных API по коду: ведь API третьих сторон не всегда идеально подогнаны к решаемой задаче. Мало того, API бывают неудобно спроектированы.

Мы каждый день работаем с браузером и для нашей задачи надо взглянуть на него под новым углом.

Что такое браузер?

Это движок (engine), машина, выполняющая блочные вычислений над XML/HTML для рендеринга изображения. Код данного движка писался годами и имеет размер в десятки мегабайт кода на C++. Встроенная в движок JavaScript-машина позволяет писать «тонкие» прослойки над API движка браузера.

API браузера по ряду причин написаны мягко говоря «криво». Виной тому и исторические причины – движение web-технологий от статического к динамическому WEB, и субъективные – пресловутые «войны браузеров», во время которых IT-гиганты включали в свои браузеры заведомо несовместимые технологии. Одно это уже требовало написание обёрток, чтобы «отвязаться» от особенностей конкретного браузера.

Пресловутые «костыли» к IE приходится ставить и поныне.

Каковы этапы написания обёртки?

Первый этап — селекция API: выбор наиболее полезных и удачных решений, используемых в проекте в дальнейшем.

Второй этап — накопление статистики. Здесь следует остановиться подробнее. Ведь именно это и делает процесс разработки итеративным: мы узнаём частоту использования тех или иных функций и программных конструкций, а заем выносим наиболее часто используемые из них в отдельные API, классы или субсистемы.

Точно так же по мере использования программной системы или продукта конечными пользователями, мы узнаём наиболее часто выполняемые пользователями операции, отсюда возникает необходимость адаптировать продукт особенно какое-то время после запуска. И это объективные причины, от которых даже при самом тщательном проектировании не удаётся уйти.

Третий этап – создание обёртки. Хорошая обёртка должна сбрасывать сложность пользования API, унифицировать вводимый API в соответствии с внутренними требованиями к оформлению кода продукта, покрывать наиболее часто пользуемые случаи и операции.

Возьмём, например, часто пользуемые API браузера для передачи данных – это XHR (XMLHttpRequest) и WebSocket. Возможности этих API схожи: и там и там мы посылаем данные серверу, получаем от него ответы, ловим события об ошибках от браузерного движка.

Значит, можно написать одну логику, которая будет единообразно выполнять такие операции и две небольшие обёртки над XHR и WebSocketabstraction layer, скрывающий внутренние реализации и различия между WebSocket и XHR.

Хороший разработчик удачно покрывает обёртками пользуемые API. Отсюда высок спрос и высока оплата работы таких специалистов. Кем быть вам и желаем.

Есть вопрос? Напишите в комментариях!

Wrapper

Wrapper, в буквальном переводе «обёртка» — это программный продукт, адаптирующий какое-либо приложение или библиотеку для использования в среде, где их использование разработчиками не предусматривалось. В игровой индустрии под врапперами обычно понимаются обёртки над библиотеками одних языков программирования для использования в других. Так, к примеру, существуют врапперы над С++ библиотекой PhysX для использования в управляемых .NET языках, например, C#.

Что такое Wrapper?

10 июня 2009 (Обновление: 11 июня 2009)

Что такое враппер?

Как я понял враппер может быть нужен чтобы например использовать библиотеку, написанную на СИ, в программе на C#. Враппер это отдельный файл от библиотеки?

Отслеживать
задан 3 июн 2011 в 11:19
741 3 3 золотых знака 18 18 серебряных знаков 39 39 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Wrapper переводится как «обёртка». Поскольку я не вижу смысла использовать лишние англицизмы, предпочту переведённый термин.

Обёртка требуется, если одна подсистема требует реализации определённого интерфейса, а другая подсистема, в которой реализована нужная функциональность, не реализует этот интерфейс. Тогда пишется легковесный класс, реализующий требуемый интерфейс и делегирующий вызовы методов этого интерфейса второй подсистеме. После этого первой подсистеме передаётся этот класс, благодаря которому она может работать со второй подсистемой через свой родной интерфейс.

Например, в .NET есть абстракция «поток», представленная базовым абстрактным классом Stream. Эта абстракция используется такими подсистемами, как, например, сериализаторы. А дальше мы можем, отнаследовавшись от класса Stream, реализовать потоковый доступ к любому источнику данных, и тогда любой сериализатор будет работать с этим источником данных через интерфейс потока.

«Библиотека на C» является частным случаем второй подсистемы. В этом случае оборачивать требуется сам механизм взаимодействия: для неуправляемых библиотек основным способом внешнего взаимодействия являются экспортируемые функции, а для управляемых — публичные типы. Обёртка над C-библиотекой помещается в .NET-среду, и работа с библиотекой происходит через обращение к .NET-типу, который, как минимум, должен содержать методы, импортированные из библиотеки (без тела, с модификатором extern и атрибутом DllImport). Если требуется какая-либо дополнительная обработка, то импортированные методы следует сделать приватными, а наружу вывести методы, вызывающие импортированные и делающие вспомогательную работу.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *