Кросс-платформенная компонентная объектная модель ( XPCOM ) - это кроссплатформенная компонентная модель от Mozilla . Он похож на модель компонентных объектов Microsoft (COM) и архитектуру посредника общих объектных запросов (CORBA). [1] Он имеет многоязычные привязки и описания языка описания интерфейса (IDL); таким образом программисты могут включать свои пользовательские функции в структуру и соединять ее с другими компонентами.
Наиболее широко XPCOM используется в веб-браузере Firefox . Многие из его внутренних компонентов взаимодействуют через интерфейсы XPCOM. Кроме того, Firefox раньше разрешал надстройкам расширенный доступ к XPCOM, но в 2017 году он был удален и заменен менее разрешающим API WebExtensions . [2] [3] (Три форка Firefox по-прежнему поддерживают устаревшие надстройки: Pale Moon , [4] Basilisk , [5] Waterfox . [6] )
Модель
XPCOM - одна из главных вещей, делающих среду приложений Mozilla реальной средой. Это среда разработки, которая предоставляет разработчику кроссплатформенного программного обеспечения следующие функции:
- Управление компонентами
- Абстракция файлов
- Передача сообщения объекта
- Управление памятью
Эта компонентная объектная модель делает практически все функциональные возможности Gecko доступными в виде серии компонентов или многократно используемых кроссплатформенных библиотек , к которым можно получить доступ из веб-браузера или создать сценарий из любого приложения Mozilla. Приложения, которые должны обращаться к различным библиотекам Mozilla XPCOM ( сеть , безопасность , DOM и т. Д.), Используют специальный уровень XPCOM, называемый XPConnect , который отражает интерфейсы библиотеки на JavaScript или других языках. XPConnect склеивает интерфейс с компонентами на основе языков программирования C ++ или C в XPCOM, и его можно расширить, включив поддержку сценариев для других языков: PyXPCOM [7] уже предлагает поддержку Python . PerlConnect и plXPCOM [8] обеспечивают поддержку Perl , и в настоящее время предпринимаются попытки добавить поддержку Common Language Infrastructure (CLI) и языка Ruby для XPConnect.
Для разработчиков XPCOM позволяет писать компоненты на C ++ , C , JavaScript , Python или других языках, для которых созданы специальные привязки, а также компилировать и запускать эти компоненты на десятках различных платформ, включая эти и другие, на которых поддерживается Mozilla.
Гибкость, позволяющая повторно использовать компоненты XPCOM из библиотеки Gecko и разрабатывать новые компоненты, которые работают на разных платформах, способствует быстрой разработке приложений и приводит к тому, что приложение становится более продуктивным и простым в обслуживании. Сетевая библиотека, например, представляет собой набор компонентов XPCOM, к которым можно получить доступ и которые могут использоваться любым приложением Mozilla. Файловый ввод-вывод, безопасность, управление паролями и профили также являются отдельными компонентами XPCOM, которые программисты могут использовать при разработке собственных приложений.
Прошлое чрезмерное использование
XPCOM добавляет много кода для маршалинга объектов, а в эпоху Netscape XPCOM чрезмерно использовался для внутренних интерфейсов, где это не было действительно необходимо, что приводило к раздутию программного обеспечения . [9] Это была причина , почему ключ в 2001 году Apple , раздвоенный KHTML , а не Gecko, чтобы создать WebKit двигатель для его Safari браузер. [10]
С тех пор Mozilla устранила некоторые излишки XPCOM. [11] К 2008 году это в сочетании с другими усилиями привело к значительному повышению производительности Gecko . [12]
Рекомендации
- ^ Сравнение с COM, GObject, SOM, Objective-C, Windows Runtime
- ^ Примечания к выпуску Firefox 57
- ^ Кев Нидхэм (2015-08-21). «Будущее разработки надстроек Firefox» . blog.mozilla.org . Проверено 2 апреля 2018 .
- ^ «Дорожная карта будущего Бледной Луны» . Бледная луна . Проверено 2 апреля 2018 .
- ^ «Команда Pale Moon выпускает первую версию браузера Basilisk» . ghacks.net . 2017-11-17 . Проверено 2 апреля 2018 .
- ^ «Waterfox, его наследие и взгляд в будущее» . Блог Waterfox . 2018-04-28 . Проверено 20 июня 2018 .
- ^ PyXPCOM
- ^ Проект Perl XPCOM
- ^ Хорхе О. Кастро (2004-06-15). «Ars Technica встретится со Скоттом Коллинзом из Mozilla.org» . Ars Technica . Проверено 16 февраля 2017 .
- ^ Пол Феста (14 января 2003 г.). «Яблочный пренебрежительный отзыв о Mozilla» . Сети CNET . Архивировано из оригинала на 2012-10-25 . Проверено 16 февраля 2017 .
- ^ «Геккон: Обеззараживание» .
- ^ Райан Пол (9 сентября 2008 г.). «Почему Mozilla привержена Gecko по мере роста популярности WebKit» . Проверено 16 февраля 2017 .
Внешние ссылки
- Справочник по API XPCOM
- Домашняя страница проекта XPCOM
- Немного устаревшая, но все же полезная книга о XPCOM.
- Простое руководство по XPCOM