stringtranslate.com

XPCOM

Cross Platform Component Object Model ( XPCOM ) — кроссплатформенная компонентная модель от Mozilla . Она похожа на Component Object Model (COM), Common Object Request Broker Architecture (CORBA) и системную объектную модель (SOM). Она включает в себя множественные языковые привязки и описания языка описания интерфейса (IDL); таким образом, программисты могут подключать свои пользовательские функции к фреймворку и связывать его с другими компонентами.

Наиболее заметное использование XPCOM происходит в веб-браузере Firefox . Многие из его внутренних компонентов взаимодействуют через интерфейсы XPCOM. Кроме того, Firefox раньше позволял надстройкам обширный доступ к XPCOM, но в 2017 году это было удалено и заменено менее разрешительным API WebExtensions . [1] [2] (Два форка Firefox по - прежнему поддерживают возможность надстройки XPCOM: Pale Moon [3] и Basilisk [4] )

Модель

XPCOM — одна из главных вещей, делающих среду приложений Mozilla фактическим фреймворком. Это среда разработки, которая предоставляет следующие возможности для разработчика кроссплатформенного ПО:

Эта компонентная объектная модель делает практически все функциональные возможности Gecko доступными в виде серии компонентов или повторно используемых кроссплатформенных библиотек , к которым можно получить доступ из веб-браузера или скрипта из любого приложения Mozilla. Приложения, которым необходимо получить доступ к различным библиотекам Mozilla XPCOM ( сети , безопасность , DOM и т. д.), используют специальный слой XPCOM, называемый XPConnect , который отображает интерфейсы библиотеки в JavaScript или других языках. XPConnect склеивает интерфейс с компонентами на основе языков программирования C++ , C или Rust в XPCOM, и его можно расширить, включив поддержку скриптов для других языков: PyXPCOM [5] уже предлагает поддержку Python . wxWidgets [6] обеспечивают поддержку Perl , и ведутся работы по добавлению поддержки языка Common Language Infrastructure (CLI) и Ruby для XPConnect.

Для разработчиков XPCOM позволяет писать компоненты на C++ , C , JavaScript , Python или других языках, для которых созданы специальные привязки, а также компилировать и запускать эти компоненты на десятках различных платформ, включая эти и другие, где поддерживается Mozilla.

Гибкость повторного использования компонентов XPCOM из библиотеки Gecko и разработки новых компонентов, работающих на разных платформах, облегчает быструю разработку приложений и приводит к более производительному и простому в обслуживании приложению. Например, сетевая библиотека представляет собой набор компонентов XPCOM, к которым может получить доступ и которые может использовать любое приложение Mozilla. Файловый ввод-вывод, безопасность, управление паролями и профили также являются отдельными компонентами XPCOM, которые программисты могут использовать при разработке собственных приложений.

Прошлое чрезмерное использование

XPCOM добавляет много кода для маршаллинга объектов, и в эпоху Netscape XPCOM чрезмерно использовался для внутренних интерфейсов, где он на самом деле не был необходим, что приводило к раздуванию программного обеспечения . [7] Это было основной причиной, по которой в 2001 году Apple разветвила KHTML , а не Gecko, чтобы создать движок WebKit для своего браузера Safari . [8]

С тех пор Mozilla устранила часть раздувания XPCOM. [9] К 2008 году это в сочетании с другими усилиями привело к значительному повышению производительности Gecko . [10]

Ссылки

  1. ^ Заметки о выпуске Firefox 57
  2. ^ Кев Нидхэм (2015-08-21). «Будущее разработки дополнений Firefox». blog.mozilla.org . Получено 2018-04-02 .
  3. ^ "Pale Moon future roadmap". Pale Moon . Получено 2018-04-02 .
  4. ^ "Команда Pale Moon выпускает первую версию браузера Basilisk". ghacks.net . 2017-11-17 . Получено 2018-04-02 .
  5. ^ PyXPCOM [ мертвая ссылка ‍ ]
  6. ^ Кроссплатформенные разработки на основе Perl
  7. ^ Хорхе О. Кастро (15.06.2004). «Ars Technica беседует со Скоттом Коллинзом из Mozilla.org». Ars Technica . Получено 16.02.2017 .
  8. ^ Пол Феста (14.01.2003). «Apple snub stings Mozilla». CNET Networks . Архивировано из оригинала 25.10.2012 . Получено 16.02.2017 .
  9. ^ "Геккон:ДеКОМтаминация".
  10. ^ Райан Пол (2008-09-09). "Почему Mozilla привержена Gecko, поскольку популярность WebKit растет" . Получено 2017-02-16 .

Внешние ссылки